javascript - 无法从 Chrome 扩展程序将 child 附加到页面

标签 javascript google-chrome dom google-chrome-extension appendchild

这是简化的代码,它在 appendChild 行之后停止工作:

$preview = {
    designImg: '',
    thePage: null,
    designPreviewer: null,
    init: function(){
        var divNode = $('<div>').attr('id','layoutVsDesign').html('test');
        document.body.appendChild( divNode );
        alert('I never happen');
        this.designPreviewer = document.body.find('#designPreviewer');
    }
};

$(document).ready(function(){
    $preview.init();
});

知道我错过了什么吗?

我也试过:

chrome.extension.getBackgroundPage().appendChild()

几乎相同的结果

-编辑-

使用 content scripts :

有效(接受一个字符串):

chrome.tabs.executeScript({
   code: 'document.body.style.display = "none"'
});

但是

chrome.tabs.executeScript({
   code: 'document.body.appendChild("<div>tttttttesttt</div>")'
});

chrome.tabs.executeScript({
   code: 'document.body.appendChild(node[0])'
});

不行,如何将节点传递给code参数?

最佳答案

您正在将 html 方法的返回值分配给 divNode

您可以在 jQuery documentation 上找到, html 方法用作 setter 返回 jQuery 对象以允许链式调用。

因此,您试图将 jQuery 对象附加到 DOM 节点,这是无效的。

你要做的是:

var divNode = $('<div>').attr('id','layoutVsDesign').html('test');        
$("body").append( divNode ); //append a jQuery object using jQuery method

否则:

var divNode = $('<div>').attr('id','layoutVsDesign').html('test');        
document.body.appendChild( divNode[0] ); //append a DOM node with DOM method

关于javascript - 无法从 Chrome 扩展程序将 child 附加到页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21502997/

相关文章:

javascript - 从内存中移除 HTML 元素(DOM 节点)

jquery - Dom 节点操作,如何删除包裹我的选择的标签?

javascript - 尝试声明接口(interface)时出现 Google Chrome WebUSB API 错误

javascript - 通过 jQuery 在 chrome 扩展内容脚本中访问跨源 iframe 的 HTML?

javascript - 如何更改 Three.js 中 PlaneGeometry 的法线?

javascript - 如何在纯 JavaScript 中创建严格的 4 位 PIN 输入?

HTML <a> 标记 mailto 生成错误的地址

javascript - dom 是如何在对象字面量的函数之间缓存的? (Javascript)

javascript - nodejs以数组格式追加到json文件中

javascript - 无法获取独立范围的值