【问题标题】:Reload page until HTML contains a given string重新加载页面,直到 HTML 包含给定的字符串
【发布时间】:2013-10-15 14:23:32
【问题描述】:

我正在尝试找出一种方法来自动重新加载浏览器的页面,直到页面的 HTML 代码中出现特定的字符序列。即player.swf"。在我经常访问的网站上出现流式 Flash 播放器之前更新页面是一种简单直接的解决方案。

我完全是 JavaScript 和浏览器插件编程的菜鸟,但我想我看到人们创建迷你游戏,比如用一艘小船拍摄页面元素,首先在当前页面的地址栏中输入一些代码,然后我怀疑那是 JavaScript(但如果我错了,请纠正我)。

有没有办法创建一行代码,可以直接放在地址栏中并像描述的那样执行?我希望这种方式可以在任何支持从地址栏执行代码的浏览器中工作。

不涉及浏览器插件和扩展(~monkeys)的解决方案是非常受欢迎的。

【问题讨论】:

标签: javascript html bookmarklet


【解决方案1】:
var i = 0, tmr = setInterval(function(re){
  $.ajax({url: document.location.href}).done(function(html){
    document.title = (++i) + ' checks';
    if ( html.match(re) ){ clearInterval(tmr); alert('found it'); document.location.reload(); }
  });
}, 60*1000, /player\.swf/i);

它不会完全重新加载页面。它使用 AJAX 读取页面并查找感兴趣的文本。如果找到,则提醒用户,然后执行一次真正的重新加载。在文档标题中跟踪测试的数量(在页面选项卡中可见)。每 60 秒进行一次测试;适应你的喜好。

要制作成书签,谷歌搜索“书签生成器”并选择一个收藏夹。

该代码很可能在感兴趣的网站上作为普通书签工作。如果没有,您可能需要包含 jQuery。使用这个 jQuery 小书签生成器:http://benalman.com/code/test/jquery-run-code-bookmarklet/

对于那些说它不能作为小书签完成并且在重新加载页面方面过于字面思考的人:它仍然可以通过仅重新加载来完成。小书签可以首先打开一个新窗口,然后将代码注入其中,这将重新加载父窗口并检查其内部 HTML。这当然会比我提供的更复杂。

【讨论】:

  • 非常感谢!现在我要学习 JavaScript,看看用它可以制作什么其他很酷的书签。
  • 是的,你确实帮我找到了一个好的起点,但是如果将代码粘贴到地址栏中,它并不能立即正常工作,如果由以下人员处理,它也不能正常工作书签制造商 - 在第一次更新后它会抛出 done function not defined,所以它还不是我接受的解决方案。
  • 在我链接的 jQuery 书签创建器上,将“1”放入“最低要求的 jQuery 版本”框中。仅供参考,这意味着“非常最新的版本 1”。
  • 浏览器控制台仍然显示TypeError: $.ajax(...).done is not a function
  • 好的。我在书签生成器的逻辑中看到了一个问题。它测试 jquery 版本,并将“1”视为低于“1.x.x”,即使“1”实际上表示 1 的最新版本。尝试使用“1.10.2”
【解决方案2】:

您可能希望创建一个浏览器插件或 tampermonkey/greasemonkey 脚本来完成其中的“自动化”部分。

如果没有浏览器插件,您当然可以只在地址栏中使用 JavaScript,或者称为 JavaScript“书签”。

但是,每次页面刷新时,您都需要单击小书签,或输入一次 JavaScript 代码。每次刷新页面时都会重新加载 JavaScript。因此,保持查找“player.swf”的 JavaScript 代码的唯一方法是使用浏览器插件或模拟插件的东西,例如 tampermonkey/greasemonkey。

插件或 tampermonkey/greasemonkey 都可以在页面加载时自动运行 javascript,只要页面的 URL 匹配为该特定脚本定义的任何内容。例如,这是我在大约 15 秒内编写的一个 Tampermonkey 脚本,只要它打开,它就会在我访问 stackoverflow.com 页面的任何时候运行:

// ==UserScript==
// @name       Awesome website landing notifier
// @version    0.1
// @description  Let's you know when you're on a stack overflow webpage.
// @match      http://stackoverflow.com/*
// @copyright  2013+, Russell Dempsey aka SgtPooki
// ==/UserScript==


alert('You\'re on a stackoverflow page!');

【讨论】:

  • 我在 C# 方面的经验告诉我,这可以通过小书签来完成,也许不是那么容易,但我相当确定这是可能的。而且我不想使用任何依赖于浏览器的解决方案。
  • 每次刷新都要点击书签吗?如果是:可以。如果不是,它不能。
  • 另外,用户脚本在greasemonkey 和/或tampermonkey 中运行。所以我确信你可以在 Chrome 或 FF 上运行它们。
猜你喜欢
  • 2017-07-01
  • 1970-01-01
  • 2021-10-11
  • 2012-10-05
  • 1970-01-01
  • 2015-01-06
  • 2021-12-15
  • 2012-10-13
  • 1970-01-01
相关资源
最近更新 更多