如何在Chrome扩展页面加载页面后触发Javascript?
问题描述:
我一直在努力扩展铬!现在,我的扩展程序从用户处接受输入,然后单击按钮时,它将重定向到一个页面并填充输入到特定文本字段的数据。 我能够重定向到页面,但是当我尝试通过使用id名称获取元素时,它会给出空错误!因为在页面正确加载之前javascript正在运行。我试过但找不到方法!如何在Chrome扩展页面加载页面后触发Javascript?
在我的内容脚本我有这样的功能:
function redirect(data)
{
location.replace("xyz.html");
window.onload = function()
{
alert();
var textField = document.getElementById("textField");
textField.value = data ;
}
}
答
当你调用location.replace
,你加载一个新的页面,您的当前文档将被关闭,这意味着你注入到这个文件的内容脚本不会工作。
说你目前在页面A和想重定向到网页B,当你从一个数据,当重定向到B保存到chrome.storage或background page,然后从chrome.storage
获取数据或一个解决方法是persistent page
。
的示例代码如下所示:
chrome.storage.local.get("data", function(results) {
var data = results.data;
var textField = document.getElementById("textField");
if (textField) {
textField.value = data;
} else {
chrome.storage.local.set({"data": "your data here"});
redirect("your data here");
}
});
function redirect(data) {
location.replace("xyz.html");
}
很抱歉,但我不明白了! –
@Ram,添加了示例代码。我的意思是你总是可以尝试获取数据和textField,如果textField不是未定义的,这意味着你的内容脚本正在重定向页面中运行,那么你可以设置textField的值;否则,你在前页面,只是重定向它。 –
以及我如何将它保存到铬存储?你使用了chrome.storage.local.get,但是为了这个如何首先保存?或者我应该只复制粘贴这个? –