草庐IT

javascript - Greasemonkey 脚本仅在页面重新加载时运行

coder 2024-07-23 原文

我正在编写 Greasemonkey 脚本,将一些文本转换为 a Rally 上的链接。页。该脚本在我重新加载页面时工作正常。如果我以任何方式(链接、浏览器前进/后退)导航到页面,脚本不会运行,尽管 Greasemonkey 菜单在底部显示我的脚本,并带有复选标记。

这是一个示例网址:

https://rally1.rallydev.com/#/4745909548/detail/userstory/6138899084/changesets

我的匹配规则:

/^https://.*\.rallydev\.com/.*/changesets$/

我不知道是不是哈希引起的问题,但是当我重新加载时一切正常。

不知道从这里去哪里。感谢您的帮助。

最佳答案

不可能确定发生了什么,因为目标页面在付费墙后面,而且他们所谓的“免费试用”机制会大打折扣。

以下是当前行为的一些可能原因:

  1. 初始请求不安全 (http),但会重定向到安全页面 (https)。
  2. 第一个页面加载执行某种其他类型的重定向到实际页面。
  3. 目标内容在 <iframe> 中不会立即加载。
  4. 目标内容是 AJAX 嵌入的。
  5. 一些奇特的东西,我们需要查看实际页面才能弄清楚。
  6. 初始 URL 并没有真正以 changesets 结尾.

此外,养成转义 / 的习惯s 在正则表达式的中间。它并不总是需要的,但如果你不这样做,它最终会在[审查]中咬你一口。 所以脚本应该使用:

// @include  /^https:\/\/.*\.rallydev\.com\/.*\/changesets$/

开始,但见下文。


解决步骤:

  1. 更改您的 @include考虑到 http 和 URL 中尾随空格或尾随斜杠的可能性。使用:

    // @include  /^https?:\/\/.*\.rallydev\.com\/.*\/changesets(?:\s|\/)*$/
    
  2. Firebug 检查页面.内容是 AJAX 嵌入的吗?它在 <iframe> 中吗? ?如果有,iframe URL 是什么?
  3. 要同时检测 AJAX 和/或重定向,请使用 Firebug's Net panel和/或 Wireshark .
  4. 如果可能,请向我们提供登录凭据,以便我们可以看到有问题的页面。
  5. 为有问题的页面拍摄快照(通过 Firefox 保存)并链接到 Pastebin.com 中的 HTML 和 JS .
  6. 考虑使用如下代码:

    if (window.top != window.self) {
        //--- Don't run on/in frames or iframes.
        return;
    }
    

    让脚本仅在(或不在)iframe 中运行,如适用。


如果问题是由 AJAX 延迟(或加载新内容)引起的,请使用 the waitForKeyElements() utility 解决这个问题如图"Fire Greasemonkey script on AJAX request" .

关于javascript - Greasemonkey 脚本仅在页面重新加载时运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10456392/

有关javascript - Greasemonkey 脚本仅在页面重新加载时运行的更多相关文章

  1. ruby - 如何将脚本文件的末尾读取为数据文件(Perl 或任何其他语言) - 2

    我正在寻找执行以下操作的正确语法(在Perl、Shell或Ruby中):#variabletoaccessthedatalinesappendedasafileEND_OF_SCRIPT_MARKERrawdatastartshereanditcontinues. 最佳答案 Perl用__DATA__做这个:#!/usr/bin/perlusestrict;usewarnings;while(){print;}__DATA__Texttoprintgoeshere 关于ruby-如何将脚

  2. ruby - 如何在续集中重新加载表模式? - 2

    鉴于我有以下迁移:Sequel.migrationdoupdoalter_table:usersdoadd_column:is_admin,:default=>falseend#SequelrunsaDESCRIBEtablestatement,whenthemodelisloaded.#Atthispoint,itdoesnotknowthatusershaveais_adminflag.#Soitfails.@user=User.find(:email=>"admin@fancy-startup.example")@user.is_admin=true@user.save!ende

  3. ruby-on-rails - active_admin 目录中的常量警告重新声明 - 2

    我正在使用active_admin,我在Rails3应用程序的应用程序中有一个目录管理,其中包含模型和页面的声明。时不时地我也有一个类,当那个类有一个常量时,就像这样:classFooBAR="bar"end然后,我在每个必须在我的Rails应用程序中重新加载一些代码的请求中收到此警告:/Users/pupeno/helloworld/app/admin/billing.rb:12:warning:alreadyinitializedconstantBAR知道发生了什么以及如何避免这些警告吗? 最佳答案 在纯Ruby中:classA

  4. ruby-on-rails - 独立 ruby​​ 脚本的配置文件 - 2

    我有一个在Linux服务器上运行的ruby​​脚本。它不使用rails或任何东西。它基本上是一个命令行ruby​​脚本,可以像这样传递参数:./ruby_script.rbarg1arg2如何将参数抽象到配置文件(例如yaml文件或其他文件)中?您能否举例说明如何做到这一点?提前谢谢你。 最佳答案 首先,您可以运行一个写入YAML配置文件的独立脚本:require"yaml"File.write("path_to_yaml_file",[arg1,arg2].to_yaml)然后,在您的应用中阅读它:require"yaml"arg

  5. ruby - RuntimeError(自动加载常量 Apps 多线程时检测到循环依赖 - 2

    我收到这个错误:RuntimeError(自动加载常量Apps时检测到循环依赖当我使用多线程时。下面是我的代码。为什么会这样?我尝试多线程的原因是因为我正在编写一个HTML抓取应用程序。对Nokogiri::HTML(open())的调用是一个同步阻塞调用,需要1秒才能返回,我有100,000多个页面要访问,所以我试图运行多个线程来解决这个问题。有更好的方法吗?classToolsController0)app.website=array.join(',')putsapp.websiteelseapp.website="NONE"endapp.saveapps=Apps.order("

  6. ruby - 在 Ruby 中重新分配常量时抛出异常? - 2

    我早就知道Ruby中的“常量”(即大写的变量名)不是真正常量。与其他编程语言一样,对对象的引用是唯一存储在变量/常量中的东西。(侧边栏:Ruby确实具有“卡住”引用对象不被修改的功能,据我所知,许多其他语言都没有提供这种功能。)所以这是我的问题:当您将一个值重新分配给常量时,您会收到如下警告:>>FOO='bar'=>"bar">>FOO='baz'(irb):2:warning:alreadyinitializedconstantFOO=>"baz"有没有办法强制Ruby抛出异常而不是打印警告?很难弄清楚为什么有时会发生重新分配。 最佳答案

  7. ruby-on-rails - 使用 config.threadsafe 时从 lib/加载模块/类的正确方法是什么!选项? - 2

    我一直致力于让我们的Rails2.3.8应用程序在JRuby下正确运行。一切正常,直到我启用config.threadsafe!以实现JRuby提供的并发性。这导致lib/中的模块和类不再自动加载。使用config.threadsafe!启用:$rubyscript/runner-eproduction'pSim::Sim200Provisioner'/Users/amchale/.rvm/gems/jruby-1.5.1@web-services/gems/activesupport-2.3.8/lib/active_support/dependencies.rb:105:in`co

  8. ruby-on-rails - 从应用程序中自定义文件夹内的命名空间自动加载 - 2

    我们目前正在为ROR3.2开发自定义cms引擎。在这个过程中,我们希望成为我们的rails应用程序中的一等公民的几个类类型起源,这意味着它们应该驻留在应用程序的app文件夹下,它是插件。目前我们有以下类型:数据源数据类型查看我在app文件夹下创建了多个目录来保存这些:应用/数据源应用/数据类型应用/View更多类型将随之而来,我有点担心应用程序文件夹被这么多目录污染。因此,我想将它们移动到一个子目录/模块中,该子目录/模块包含cms定义的所有类型。所有类都应位于MyCms命名空间内,目录布局应如下所示:应用程序/my_cms/data_source应用程序/my_cms/data_ty

  9. postman——集合——执行集合——测试脚本——pm对象简单示例02 - 2

    //1.验证返回状态码是否是200pm.test("Statuscodeis200",function(){pm.response.to.have.status(200);});//2.验证返回body内是否含有某个值pm.test("Bodymatchesstring",function(){pm.expect(pm.response.text()).to.include("string_you_want_to_search");});//3.验证某个返回值是否是100pm.test("Yourtestname",function(){varjsonData=pm.response.json

  10. ruby - 确定 ruby​​ 脚本是否已经在运行 - 2

    有没有一种简单的方法可以判断ruby​​脚本是否已经在运行,然后适本地处理它?例如:我有一个名为really_long_script.rb的脚本。我让它每5分钟运行一次。当它运行时,我想看看之前运行的是否还在运行,然后停止第二个脚本的执行。有什么想法吗? 最佳答案 ps是一种非常糟糕的方法,并且可能会出现竞争条件。传统的Unix/Linux方法是将PID写入文件(通常在/var/run中)并在启动时检查该文件是否存在。例如pid文件位于/var/run/myscript.pid然后你会在运行程序之前检查它是否存在。有一些技巧可以避免

随机推荐