我正在编写一个表单填写用户脚本(对于Chrome中的Tampermonkey),它应该从页面中的JavaScript中获取变量并将这些变量放在表单中。到目前为止,这是我的代码:
document.getElementById('entry_1').value = window.a1[0];
对entry_2到entry_5和a1到a5重复。 a1的定义如下:
var a1 = new Array("Green","green");
因此运行userscript时应将值“Green”放在表单字段entry_1中。但是,我得到了这个:
TypeError: Cannot read property '0' of undefined
at Function.eval (eval at <anonymous> (eval at eventHandler (eval at <anonymous> (chrome-extension://dhdgffkkebhmkfjojejmpbldmpobfkfo/content.js:56:21))), <anonymous>:65:53)
如前所述,我正在使用Chrome。在javascript控制台中运行用户脚本代码工作正常,并确实更改了表单字段。如何从Tampermonkey脚本中获得相同的结果?
答案 0 :(得分:3)
执行此操作的正确方法是使用unsafeWindow
代替window
,如下所示:
document.getElementById('entry_1').value = unsafeWindow.a1[0];
但请注意,这在Chrome JS控制台中不起作用。