Javascript 铬';这是我的内容脚本。访问DOM对象的非典型属性

Javascript 铬';这是我的内容脚本。访问DOM对象的非典型属性,javascript,dom,google-chrome-extension,content-script,Javascript,Dom,Google Chrome Extension,Content Script,我在Chrome控制台中为DOM元素编写非典型属性: document.getElementById('some_id').atypical_property = 'some text' 之后,我尝试读取content\u script.js中的非典型\u属性: alert(document.getElementById('some_id').atypical_property); 但这是不确定的!好啊我试着在Chrome的控制台中读取属性,这是“一些文本”! 运行时在清单中更改不会更改结果

我在Chrome控制台中为DOM元素编写非典型属性:

document.getElementById('some_id').atypical_property = 'some text'
之后,我尝试读取content\u script.js中的非典型\u属性:

alert(document.getElementById('some_id').atypical_property);
但这是不确定的!好啊我试着在Chrome的控制台中读取属性,这是“一些文本”! 运行时在清单中更改不会更改结果。 我尝试使用setTimeout,但许多延迟为500毫秒的计时器迭代都不会改变结果(typeof document.getElementById('some_id')。非典型_属性==“undefined”)

Chrome的控制台就是一个例子。在真正的脚本网站上设置非典型属性,我希望阅读它。 我能看看这个房间吗


提前感谢。

使用
elem.someProp=…
设置节点对象的属性(不设置HTML属性-例如,如果检查HTML,则不会看到任何差异)。由于内容脚本和实际页面仅共享DOM(而不是JS上下文,修改后的节点对象“存在于此”),因此需要修改HTML,以使内容脚本能够看到更改(尽管这将值的类型限制为字符串(或JSONifiable对象))


或者,您可以使用
数据-
属性(效果相同):


在嵌入页面和postMessage中使用创建脚本(此代码位于content_script.js中):


1.使用
.textContent
,而不是
.innerHTML
。2.避免将变量泄漏到页面(您正在泄漏
\u脚本
)。通过使用
“(“+”脚本“+”);”
-请参阅这些“非典型属性”称为expando对象,仅供参考。
document.getElementById('some_id').setAttribute('atypical_property', 'some text');

alert(document.getElementById('some_id').getAttribute('atypical_property'));
document.getElementById('some_id').dataset.atypical_property = 'some text'

alert(document.getElementById('some_id').dataset.atypical_property);
window.addEventListener("message", function(event) {
    if (event.source != window)
       return;
    if (event.data.type && (event.data.type == "FROM_PAGE")) {
    //...
    }
}
function _script_(){
    function _tc_(sel){ 
        return typeof sel != "undefined" && sel !=null ? sel.t_content : "no";
    }

    window.postMessage({ 
        type: "FROM_PAGE",
        type_of_wp: _tc_(document.querySelector(".team-0 .withTip.firearms")),
        rank : _tc_(document.querySelector(".team-0 .withTip.sp.g1eb8.ic12453f2.d3710")),
        clothes: _tc_(document.querySelector(".team-0 .withTip.armor-plating")),
        house:_tc_(document.querySelector(".register.statistics img.withTip"))
    }, "*");
}
var n = document.createElement('script');
n.innerHTML = _script_.toString() + " _script_();";

document.body.appendChild(n);