2016-04-26 278 views
0

我一直在努力扩展铬!现在,我的扩展程序从用户处接受输入,然后单击按钮时,它将重定向到一个页面并填充输入到特定文本字段的数据。 我能够重定向到页面,但是当我尝试通过使用id名称获取元素时,它会给出空错误!因为在页面正确加载之前javascript正在运行。我试过但找不到方法!如何在Chrome扩展页面加载页面后触发Javascript?

在我的内容脚本我有这样的功能:

function redirect(data) 
{ 
location.replace("xyz.html"); 
     window.onload = function() 
     { 
      alert(); 
      var textField = document.getElementById("textField"); 
      textField.value = data ; 
     } 
} 

回答

0

当你调用location.replace,你加载一个新的页面,您的当前文档将被关闭,这意味着你注入到这个文件的内容脚本不会工作。

说你目前在页面A和想重定向到网页B,当你从一个数据,当重定向到B保存到chrome.storagebackground 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"); 
} 
+0

很抱歉,但我不明白了! –

+0

@Ram,添加了示例代码。我的意思是你总是可以尝试获取数据和textField,如果textField不是未定义的,这意味着你的内容脚本正在重定向页面中运行,那么你可以设置textField的值;否则,你在前页面,只是重定向它。 –

+0

以及我如何将它保存到铬存储?你使用了chrome.storage.local.get,但是为了这个如何首先保存?或者我应该只复制粘贴这个? –

相关问题