Javascript,等待重定向然后执行代码后加载页面

时间:2015-08-29 01:31:03

标签: javascript jquery redirect google-chrome-extension click

您好我已经在此网站上多次发布此解决方案,答案通常是以下之一。

$( document ).ready()
window.onload="myFunction()";

我正在制作一个谷歌扩展程序,使用chrome的标签更新重定向到新页面,然后使用chrome的标签执行脚本向新重定向的页面引入新脚本以单击按钮。我会重定向页面然后使用上面的方法我试图让新脚本在重定向页面而不是当前页面上运行。可悲的是,他们都没有工作,他们仍然会让新脚本放在旧页面上。因此,为了解决这个问题,我只使用了setTimeout并将其设置为1500,大致有足够的时间来加载新页面,但这并不是非常有效,而且对于用户来说可能有所不同是我有什么东西做错了还是这是唯一的解决方案?

我的代码看起来像这样。

chrome.tabs.update({url: "www.example.com"});
pause(); // I just took the liberty of shorting the whole setTimeout part
chrome.tabs.executeScript(null, {file: "jquery.js"}), console.log("jquery loaded");

当我尝试在页面开头使用原始解决方案时,我只需将执行脚本包装在其中,使其看起来像这样。

chrome.tabs.update({url: "www.example.com"});
pause(); // I just took the liberty of shorting the whole setTimeout part
$( document ).ready(){
  chrome.tabs.executeScript(null, {file: "jquery.js"}), console.log("jquery loaded");
}

我目前正在做的是使用类似250的短setTimeout,然后将我的代码包装在.ready()中/ works /但是我更喜欢将setTimeout一起删除所有这一点。这个问题。 先感谢您!如果您需要更多信息,请询问。

1 个答案:

答案 0 :(得分:0)

我对chrome.tabs等一无所知,但使用计时器是一个黑客攻击。任何异步调用都需要一个回调,即一个在调用函数完成其执行时触发的函数。

快速谷歌,我发现了这个:

chrome.tabs.update(integer tabId, object updateProperties, function callback)

因此,您可以将回调作为最后一个参数传递。这是link,向下滚动到[更新]部分。

如果您需要有关回调的帮助,请发布另一个问题,我们会从那里开始......