بما في ذلك ملفات JavaScript في برنامج نصي محتوى ملحق Chrome
-
26-09-2019 - |
سؤال
أنا أكتب امتدادًا للكروم ، وأريد كتابة ملف JS واحد ، يوفر العديد من الوظائف المتوقعة غير الموجودة في أخرى ، ثم قم بتحميل هذا الملف الآخر. أنا بعد سلوك مشابه ل require
في بيرل ، #include
في ج ، أو execfile
في Python عند تمرير السكان المحليين والوحدات النمطية الحالية ، كما لو تم إدراج الملف المشار إليه مباشرة في البرنامج النصي الحالي.
تتضمن معظم الحلول الموجودة التي يمكنني اكتشافها هناك تشير إلى تضمينها "" علامات البرنامج النصي الداخلية ، لكنني لست متأكدًا ).
update0
لاحظ أنني أكتب نص محتوى. على الأقل على جانب "المستخدم" ، لا أقدم مستند HTML الأصلي.
المحلول
حسنًا ، كان أفضل حل خاص بالكروم. يتم سرد ملفات JavaScript بالترتيب الذي يتم تحميله في الامتداد manifest.json
, ، إليك مستخلص من مجال ذي صلة:
{
"content_scripts": [
{
"js" : ["contentscript.js", "254195.user.js"]
}
]
}
يتم تسلسل ملفات JavaScript بشكل فعال بالترتيب المقدم ثم تنفيذها.
نصائح أخرى
function load_script (url, cache)
{
var httpRequest = new ActiveXObject("Msxml2.XMLHTTP");
httpRequest.open('GET', url, false);
if(!cache)
{
httpRequest.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
}
httpRequest.send(null);
eval(httpRequest.responseText);
var s = httpRequest.responseText.split(/\n/);
var r = /^function\s*([a-z_]+)/i;
for (var i = 0; i < s.length; i++)
{
var m = r.exec(s[i]);
if (m != null)
{
window[m[1]] = eval(m[1]);
}
}
}
load_script("/script.js",true);
نستخدم هذا في منظمتنا للقيام بذلك. يبدو أنه يعمل بشكل جيد بما فيه الكفاية.
هل جربت :
<script language="javascript" src="otherfile.js">
أو (لست متأكدًا من ... لكنني أتذكر أحدهم يعمل)
document.write('<script type="text/javascript" src="otherfile.js"></script>');