Javascript 铬';这是我的内容脚本。访问DOM对象的非典型属性
我在Chrome控制台中为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的控制台中读取属性,这是“一些文本”! 运行时在清单中更改不会更改结果
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);