【问题标题】:Loading page and executing JS on it...from JS bookmarklet?加载页面并在其上执行 JS...来自 JS 书签?
【发布时间】:2010-02-15 17:28:03
【问题描述】:

基本上我正在尝试

  1. 导航到网页
  2. 等待该网页加载
  3. 在该页面上执行 JS 函数/警报/任何内容

全部来自一个书签。这可能吗?我似乎无法为我工作,但这可能是因为我个人在这里的失败。

【问题讨论】:

  • 让我们看看您的代码 - 寻求调试帮助的问题(“为什么这段代码不起作用?”)必须包括所需的行为、特定问题或错误以及在问题本身。没有明确问题陈述的问题对其他读者没有用处。请参阅:如何创建一个最小的、可重现的示例。

标签: javascript bookmarklet


【解决方案1】:

我发现不需要 Greasemonkey 或类似的东西的最简单的方法是编写你的 JS,以便它检查它是否在适当的页面上,如果不是就去那里。如果它在页面上,那么它会执行 JS/alert/whatever。您必须使用小书签两次,但您只需要一个小书签,并且用户进行点击/无论他或她自己如何可能仍然更快/更容易。所以代码看起来像这样:

if(this.document.location.href != "[url]") { //Are we on the page yet? 
  this.document.location.href = "[url]"; // If not, go there
}
else {
  if (document.readyState === "complete") { //Wait for the page to finish loading
   // DO STUFF
  }
}

【讨论】:

【解决方案2】:

您想为 Firefox 安装 Greasemonkey 扩展。 (或gm4ie 用于IE,或greasemetal 用于Chrome(PersonalizedWeb 也以更简单的方式用于Chrome),greasekit 用于Safari,或user.js 用于Opera)

Greasemonkey 让您做到这一点...在每次页面加载时自动运行脚本(您可以选择加载的页面/站点)

否则,您需要在每次加载页面时单击小书签才能运行脚本。

【讨论】:

  • 那么 Greasemonkey(或 $browser 中的等价物)是唯一的解决方案吗?我的目标是制作一个可以与其他人共享的书签,而不是在每种情况下都需要一个附加组件。在某些情况下,我试图解决的问题是我学校的网站。网页设计师认为将网站上的所有链接都制作成 JS 链接是一个绝妙的主意,这些链接通过 PHP 和 AJAX 的某种神秘组合来更新网页。不幸的是,由于他们这样做的方式,目前无法链接到您班级的作业页面。
  • 您必须说“转到网站,然后单击此处,然后单击此处,然后单击此处。”我的希望是制作一个可以加载网站的书签,一旦加载页面,就会运行检索所需页面所需的 JS 链接。
  • 啊,@scikidus 我明白了……不幸的是,这听起来像是您无法控制的网站。您可以创建/使用书签,但无法触发它自动运行(无需)诉诸 Greasemonkey 类型的解决方案。您是否有机会与学校的工作人员交谈,为该站点提供修复?至于原始开发人员(仅 JS 链接为-1)
  • 这个答案没有数据。查看wiki.greasespot.net/Cross-browser_userscripting 了解有关替代方案的最新概述。
【解决方案3】:

鉴于没有更好的解决方案,我想我会抛弃 Opera 本身支持在每次页面加载时运行的用户脚本。从那里,您可以让脚本检查当前 url,并在适当的页面上运行。

See here for documentation

【讨论】:

    【解决方案4】:

    另一种选择是调用window.open(...),并使用窗口对象来操作窗口。也可以通过这种方式导航多个页面。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-26
      • 1970-01-01
      • 1970-01-01
      • 2010-09-11
      • 2014-09-29
      • 2017-09-02
      • 1970-01-01
      • 2013-03-24
      相关资源
      最近更新 更多