Javascript 从JS bookmarklet加载页面并在其上执行JS?

Javascript 从JS bookmarklet加载页面并在其上执行JS?,javascript,bookmarklet,Javascript,Bookmarklet,基本上我是想 导航到网页 等待加载该网页 在该页面上执行JS函数/警报/任何内容 所有这些都来自一个bookmarklet。这可能吗?我似乎无法让onload为我工作,但这可能是因为我个人的失误。你想为Firefox安装扩展吗。(或用于IE,或用于Chrome(也可用于Chrome),用于Safari,或用于Opera) Greasemonkey可以让你完全做到这一点。。。每次加载页面时自动运行脚本(您可以选择加载的页面/站点) 否则,您需要在每次页面加载时单击bookmarklet以运行脚本。

基本上我是想

  • 导航到网页
  • 等待加载该网页
  • 在该页面上执行JS函数/警报/任何内容
  • 所有这些都来自一个bookmarklet。这可能吗?我似乎无法让onload为我工作,但这可能是因为我个人的失误。

    你想为Firefox安装扩展吗。(或用于IE,或用于Chrome(也可用于Chrome),用于Safari,或用于Opera)

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


    否则,您需要在每次页面加载时单击bookmarklet以运行脚本。

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


    我发现,在不需要Greasemonkey或类似工具的情况下实现这一点的最简单方法是编写JS,以便它检查是否在适当的页面上,如果不在,则转到相应的页面。如果它在页面上,那么它将执行JS/alert/whatever。您必须使用bookmarklet两次,但您只需要一个bookmarklet,用户点击/点击他或她自己的内容可能会更快/更容易。因此,代码如下所示:

    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
      }
    }
    

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

    那么Greasemonkey(或$browser中的等效项)是唯一的解决方案吗?我的目标是制作一个书签,我可以与其他人共享,而不是在每种情况下都需要一个附加组件。在某些情况下,我试图解决的问题是我学校的网站。网页设计师们认为,让网站上的所有链接都仅仅是JS链接是一个绝妙的主意,JS链接通过一些神秘的PHP和AJAX组合来更新网页。不幸的是,由于他们这样做的方式,现在不可能链接到,比如说,你们班的作业页面。相反,你们必须说“去网站,然后点击这里,然后点击这里,再点击这里。”我的希望是制作一个bookmarklet来加载网站,一旦加载了页面,运行必要的JS链接来检索所需的页面。啊,@scikidus我明白了。。。不幸的是,听起来这个网站已经超出了你的控制范围。您可以创建/使用bookmarklet,但无法触发它自动运行(无需)求助于Greasemonkey类型的解决方案。你是否有机会与学校的工作人员谈谈,为网站提供修复方案?对于原始开发人员(仅JS链接为-1),这个答案是没有数据的。查看有关备选方案的最新概述。让我们看看您的代码-寻求调试帮助的问题(“为什么此代码不起作用?”)必须包括所需的行为、特定的问题或错误以及在问题本身中重现此问题所需的最短代码。没有明确问题陈述的问题对其他读者没有用处。请参阅:如何创建最小的、可复制的示例。