如何在html的头部动态添加javascript文件?

时间:2014-06-23 13:14:46

标签: javascript html

从下面的代码我试图动态加载javascript文件TestJScript.js并在加载后想要调用javascript函数LoadData()存在于该文件中。但我收到错误请检查图片。

注意:错误只能在IE-8.0.6001更新0上获得。

请建议我更正,以便从6到IE的所有版本工作。 或任何其他解决方案。

如果需要任何Windows更新。请告诉我。

请不要使用JQUERY代码建议

Javascript文件代码:

function LoadData() {   
    alert('ok');
}

代码:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
 <head>
        <script>

            function LoadJSFile() {

                    var js = document.createElement("script")
                    js.setAttribute("type", "text/javascript")
                    js.setAttribute("src", "C:\\TestJScript.js")                    
                    document.getElementsByTagName("head")[0].appendChild(js)

                    //call below function exist in TestJScript.js file
                    LoadData();
                }              

        </script>
      </head>
<body onload="LoadJSFile();">

</body>
</html>

错误图片:enter image description here

5 个答案:

答案 0 :(得分:0)

试试这个http://dustindiaz.com/scriptjs。 像这样:

$script('yui-base.js', function() {
  // do stuff with base...
  $script(['yui-anim.js', 'yui-connect.js'], function() {
    // do stuff with anim and connect...
  });
  $script('yui-drag.js', function() {
    // do stuff with drag...
  });
});

答案 1 :(得分:0)

错误报告您正在加载的javascript文件中存在问题。所以问题不在于你如何动态加载javascript文件,而在于javascript文件本身。

答案 2 :(得分:0)

文件加载后看起来有问题。您确定文件本身没有语法错误。

另外,我建议您使用javascript文件的相对路径而不是绝对路径。

编辑:

试试这个:

function LoadJSFile() {
  var script = document.createElement('script');
  script.src = "C:\\TestJScript.js";
  script.onload = function () {
    LoadData();
  };

   document.getElementsByTagName("head")[0].appendChild(script)     
}

答案 3 :(得分:0)

您可以尝试以下方法:

<script>
function LoadJSFile(src, callback) {
    var js = document.createElement('script');
    js.src = src;
    js.async = true;
    js.onreadystatechange = js.onload = function() {
        var state = js.readyState;
        if (!callback.done && (!state || /loaded|complete/.test(state))) {
            callback.done = true;
            callback();
        }
    };
    document.getElementsByTagName('head')[0].appendChild(js);
}
LoadJSFile('C:\\TestJScript.js', function() { 
    LoadData();
});
</script>

答案 4 :(得分:0)

如果您正在使用c#代码,那么解决此脚本错误的另一个解决方案是,通过c#代码调用脚本。 代码:

/

/Assiging html value to control
                webBrowser.DocumentText = "HTML content";               
//Calling document load completed event
                webBrowser.DocumentCompleted += webBrowser_DocumentCompleted;

void webBrowser_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
        {                
            HtmlDocument htmlDocument = webBrowser.Document;
            HtmlElement htmlElementHead = htmlDocument.GetElementsByTagName("head")[0];
            HtmlElement HtmlElementScript = htmlDocument.CreateElement("script");
            HtmlElementScript.SetAttribute("text", "C:\\TestJScript.js");
            htmlElementHead.AppendChild(HtmlElementScript);
            htmlDocument.InvokeScript("LoadData");
            webBrowser.DocumentCompleted -= webBrowser_DocumentCompleted;
        }