在document.write我的网页

时间:2015-10-13 12:55:42

标签: javascript html

我发现有关"扩展程序无法在新标签页中连接的问题",解决方案是使用chrome.tab模块,但是没有找到类似这样的内容:

我很多天都被困在这里,如果有人能帮助我,我会很高兴。

我正在使用跨域调用的扩展程序,但只有当我的页面是纯HTML页面时,我的网页才能连接到扩展程序(我认为是内容脚本)。如果我使用以下内容更改页面的内容:     document.open();     文件撰写(HTML);     document.close(); (我这样做是为了在用户登录时保持我的网页的网址相同)

我无法从扩展程序获得任何响应。 有没有我错过的解决方案。

参考代码: 我替换页面的HTML:

PageLoader.prototype.loadHTML = function(html) {
    if (history.pushState) 
    try {window.history.pushState(null, null, document.URL);}
    catch (e) {};

    document.open();
    document.write(html);
    document.close();
};

跨域代码: 这是点击某个按钮时调用的功能

`window.addEventListener( "message", function(event) {
    if (event.source != window ) return;
     callback(event.data.text); 
  });

 window.postMessage( { type: "com_logincat_xhr_get", url: url }, "*");    

`

此postMessage已完成但未获得 chrome扩展程序的content_script.js 的任何回复(仅当我在我的网页中使用document.write替换内容时)。 content_script.js 还包含消息的eventListner。

window.addEventListener( "message", function(event)
 {
   /* It contains piece of code to send message (chrome.runtime.sendmessage) */
 };

我发现在某些地方,content_script.js只在pageLoad上附加,而document.write可能会替换东西,但我没有找到任何解决办法。

我认为代码是正确的,因为当页面是一个简单的直接html时,它可以顺利运行。我不知道document.write对我的网页做了什么错误 我希望它会有所帮助,

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

嘿,这是我解决上述问题的方法。

我发现Extensions的content_script.js仅在pageLoad上附加到DOM。 并使用 document.write(' html')  我正在修改DOM,它正在创建与content_script.js连接的问题, 所以我决定用 document.documentElement.innerHTML = html;

使用这个我遇到了另一个问题,即脚本没有被执行,这是var html。

为此我做了这个:

var scriptToInclude = document.getElementsByTagName('script');
 for (var n = 0; n < scriptToInclude.length; n++)
     eval(scriptToInclude[n].innerHTML);

它有效:)