سؤال

أنا أكتب امتدادًا للكروم ، وأريد كتابة ملف 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>');
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top