使用jquery

时间:2016-06-02 11:43:36

标签: javascript jquery html

我知道这个答案已经重复,但没有人为我工作,我不知道为什么:(。我有一个div标签,其中包含一个脚本标签(来自网站)并加载一种框架。这个框架显示了一个监视器,感谢几个变量,比如id(这是最重要的)。所以,我想每5秒钟,id改变显示另一个监视器。

问题是在我的刷新代码中我使用方法load(),但在Firefox中我收到此警告“忽略了从异步加载的外部脚本调用document.write()。”在铬中,我得到了一个“无法在'文档'上执行'写'':除非明确打开,否则无法从异步加载的外部脚本写入文档。”

这是我的代码:

<script type="text/javascript">
    var id = ["id1", "id2", "id3"];        
        var number;
        var i = 0;
        function change(){

            if(i<id.length){
                number = id[i];
                i++;
            }else if(i>=id.length){
                clearInterval();
                number = id[i];
                console.log("start again");
            }                   
            return number;
        }

        function refresh(){
            $('#midStag').load("myUrl" +  ' #midStag');
        }

   setInterval(refresh, 5000);
</script>

<div id="midStag">
<script type="text/javascript">
    //I only put the id because is the more important variable 
    //and the only one that I am changing
    id = cambio();
    /*more variables like width or height*/

</script>
<script type="text/javascript" src="http://dashboard.monitis.com/sharedModule/shareModule.js"></script>

我真的需要它,拜托。任何帮助,我会很感激。如果你不明白的话就告诉我,我会纠正的。谢谢。

1 个答案:

答案 0 :(得分:0)

这是因为shareModule.js脚本最后有一个document.write语句。而且,由于您在使用.load()时正在重新加载该脚本,因此文档已关闭并且异步加载脚本时会出现错误。

你可以做一些事情来解决这个问题:

  1. 将脚本重写为不使用document.write,但需要访问存储在
  2. 上的服务器
  3. 在本地保存脚本并将其修改为不使用document.write。唯一的问题是,只要在服务器上更新sharedModule.js,您就必须手动更新脚本。
  4. 编辑框架的网址,替换所需的信息,即将旧网址替换为新网址。然后使用新网址设置src。

    var src = $("span iframe").prop("src");
    src = src.replace(/publicKey=\d+/,"publicKey="+newKey);
    $("span iframe").prop("src",src);
    
  5. document.write替换为将以更友好的方式插入html的函数

    document.write = function(markup){
        document.currentScript.parentElement.insertAdjacentHTML('beforeend',markup);
    };
    
  6. 演示替换document.write

    monitis_embed_module_width = 100;
    monitis_embed_module_height = 100;
    monitis_embed_module_id = 300;
    document.write = function(markup){
        document.currentScript.parentElement.insertAdjacentHTML('beforeend',markup);
    };
    
    var div = document.getElementById("test");
    setTimeout(function(){
      var s = document.createElement("script");
      s.src = "http://dashboard.monitis.com/sharedModule/shareModule.js";
      div.innerHTML = "";
      div.appendChild(s);
    },1000);
    <div id="test">
      Simulating load...
    </div>

    演示替换src

    var div = document.getElementById("test");
    var frame = null; 
    function reloadFrame(){
      frame = frame || div.querySelector("iframe");
      var src = frame.src;
      var id = Date.now();
      frame.src = src.replace(/publicKey=\d+/,"publicKey="+id);
    }
    
    setTimeout(reloadFrame,2000);
    <div id="test">
      <script>
        monitis_embed_module_width = 100;
        monitis_embed_module_height = 100;
        monitis_embed_module_id = 300;
      </script>
      <script src="http://dashboard.monitis.com/sharedModule/shareModule.js"></script>
    </div>