【问题标题】:Execute Crossrider code before pageload在页面加载之前执行 Crossrider 代码
【发布时间】:2014-02-21 15:17:16
【问题描述】:

我正在尝试使用 Crossrider 构建一些浏览器扩展。我需要在页面加载之前执行一些代码,在渲染任何 DOM 元素之前。 Crossrider有可能吗?

我尝试过使用appAPI.dom.onDocumentStart.addJS 在后台范围内,但没有运气。在我的代码执行之前,我仍然看到页面部分显示。

谢谢

更新更多细节

我正在尝试做的一个示例是将坏网站重定向到好网站的扩展程序。基本上,如果用户点击了我们列表中不好的网站,它会将他们重定向到一个好的选择并给他们一个消息。我正在处理重定向部分,这里有一些示例代码。

在我的 background.js

appAPI.ready(function($) {
   appAPI.dom.onDocumentStart.addJS({resourcePath:'main.js'});

});

然后我的资源中有一个 ma​​in.js 文件

if(window.location.href == "http://www.bing.com/"){
    console.log("You are at Bing... That's bad m'kay.");
    window.location = "http://www.google.com";
} 

在这种情况下,如果用户去 bing,他们会被重定向到 google,然后会收到一些有趣的消息。他们还将收到有关 4chan、torrent 网站等网站的警告。

所以目前如果我实现这个代码,然后去 bing 它会闪烁 DOM,然后重定向。我试图阻止这种情况。谢谢!

我正在 Win 7 和 Chrome 上进行测试

谢谢!

【问题讨论】:

  • 一般来说,appAPI.dom.onDocumentStart.addJS 方法对每个浏览器都在最早的时机运行。但是,为了进一步帮助您,我需要更多信息,例如 (1) 您正在测试哪个操作系统 (2) 您正在测试哪个浏览器 (3) 示例代码 (4) 重现问题的步骤。 [披露:我是 Crossrider 的员工]
  • 感谢 Shlomo 的回复,我使用您要求的所有其他信息编辑了我的问题。

标签: javascript browser browser-extension crossrider


【解决方案1】:

@Dan 感谢您提供额外信息,尤其是您尝试实现的场景。

在这种情况下,您可以通过简单地使用onBeforeNavigate 方法来实现您的目标,而无需在文档开始时运行。因此,根据您的 background.js 示例代码,解决方案将如下所示:

appAPI.ready(function() {
  var resourceArray = ['http://www.bing.com/'];
  appAPI.webRequest.onBeforeNavigate.addListener(function(details, opaqueData) {
    // Where:
    //   * details.pageUrl is the URL of the tab requesting the page
    //   * opaqueData is the data passed to the context of the callback function

    // Redirect requests for blocked pages
    for (var i = 0; i < opaqueData.length; ++i) {
      if (details.pageUrl.indexOf(opaqueData[i]) !== -1) {
        console.log("You are at Bing... That's bad m'kay.");
        return { redirectTo: 'http://www.google.com' };
      }
    }
  }, resourceArray); // resourceArray is the opaque parameter that is passed to the callback function
});

[披露:我是 Crossrider 的员工]

【讨论】:

  • 您不需要触发该功能。它会自动启动,因为它是后台代码的一部分。
猜你喜欢
  • 1970-01-01
  • 2011-10-20
  • 1970-01-01
  • 2013-07-27
  • 1970-01-01
  • 2012-10-05
  • 2019-12-14
  • 1970-01-01
相关资源
最近更新 更多