Javascript:创建脚本不起作用

韦纳斯巴赫

我正在使用Chrome扩展程序。我也需要检查URL是否在线。该URL向我返回了一个变量,因此,如果var为true,则该URL为在线。

如果URL处于脱机状态,则大约需要2秒钟的时间来处理错误,因此扩展弹出窗口需要2秒钟才能启动EVERYtime。

这是我的“旧”版本:

popup.html:

<script language="javascript" src="http://example.org/jdcheck.js"></script>
<script language="javascript" src="popup.js"></script>

popup.js:

if (variable) { [...] }

好吧,那很有效-2秒钟后。

现在我有了一个主意,因此我删除了popup.html中的脚本链接。这就是我的新popup.js:

background.$(document).ready(function() {


      var jq = document.createElement('script'); jq.type = 'text/javascript';
      jq.src = 'http://127.0.0.1:9666/jdcheck.js';
      document.getElementsByTagName('head')[0].appendChild(jq);

  if(jdownloader){
         [...action]
  }  
});

您看,我使用jQuery加载Checkfile。

现在,它引发了一个错误:

Uncaught ReferenceError: jdownloader is not defined 

好吧,看来createElement无法正常工作。我100%确信URL给了我想要的变量。

请你帮助我好吗?我不知道该怎么解决

谢谢!马库斯


编辑:我删除了jQuery部分,添加了keepGoing和jq.onload:

    function keepGoing() {

      console.log("JS should have been loaded");

      if(jdownloader){

        [action]
      }  
    }  

      var jq = document.createElement('script');
      jq.onload = keepGoing();
      jq.src = 'http://127.0.0.1:9666/jdcheck.js';
      document.getElementsByTagName('head')[0].appendChild(jq);

现在,控制台为我提供了这一点:

JS should have been loaded popup.js:98
Uncaught ReferenceError: jdownloader is not defined popup.js:100

因此,似乎jdownloader var没有传递给popup.js。为什么为什么?!我不知道。

马库斯

TJ人群

当您将脚本标签附加到DOM时,代码不会等待浏览器下载并评估脚本,然后再继续。

因此,您必须进行检查。在Chrome中,您可以loadscript元素使用事件

background.$(document).ready(function() {

    var jq = document.createElement('script'); jq.type = 'text/javascript';
    jq.onload = keepGoing; // Or an anonymous inline function if you prefer
    jq.src = 'http://127.0.0.1:9666/jdcheck.js';
    document.getElementsByTagName('head')[0].appendChild(jq);

    function keepGoing() {
        if(jdownloader)...
    }  
});

(之所以选择“在Chrome上运行”,是因为在较旧版本的IE中,script没有触发该load事件,而是触发了该事件readystatechange。)


旁注:如果为,则无需提供type属性text/javascript这是默认值,并且一直都是默认值。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章