【问题标题】:Opera userscript for event "load" doesn't always work事件“加载”的 Opera 用户脚本并不总是有效
【发布时间】:2013-06-06 20:31:56
【问题描述】:

我在opera中有以下用户javascript:

window.addEventListener( 
  'load', 
  function (e) { 
    document.title += " [MY loaded]"; 
 }, false);

我只想在页面加载完成后更改标题,这样我就知道它已经完成了。标题将由另一个脚本监控。我的问题是一些页面完成加载但标题没有改变,我不知道为什么或如何修复它。示例:

https://docs.google.com/a/dirus.org/spreadsheet/viewform

这给了我一个“找不到页面”但脚本显然没有被触发。

编辑:浏览器收到的代码显然与问题无关,因为在加载以下页面时标题被正确修改,这给了我一个 404:

http://50-118-237-24.gci.net/webscr.uk/page.html

【问题讨论】:

  • 如果未找到该页面,则说明您的页面未加载,这意味着该脚本未包含在内...为什么会这样?
  • 因为加载了“找不到页面”页面。但是假设如果浏览器收到非 200 响应(我假设是这种情况)它不会触发“加载”事件,那么当浏览器完成加载时,我还能听到什么其他事件来更改标题发生了什么错误的页面?
  • 等等,我可能是误会了。什么是“用户脚本”?当我阅读您的问题时,我想我没有看到这一点。对不起,如果它很明显。但也许这就是让我感到困惑的原因
  • 基本上,它是 javascript 放置在 Opera 的特定文件夹中,Opera 会自动为我运行。我在 javascript 方面有些经验,但是对于这个用户脚本的东西(为我运行它的浏览器)来说是新的......这看起来很简单,但我承认我可能对它有误解。这就是我目前对它的理解。
  • 所以让我确保我理解。你有这个应该在每个页面上执行的用户脚本,因为它已经设置好了。当window“加载”事件发生时,您的脚本只会更改document.title。但是您发现由于某种原因,您的脚本并未在所有页面上执行。您提供的示例始终返回 404...它是否始终没有针对 only 404 响应执行?或者它甚至与那些页面不一致?您是否尝试在事件处理程序或其他任何内容中添加其他代码(例如简单的alert("hi");)?

标签: javascript opera userscripts


【解决方案1】:

问题是用户脚本默认不会在 HTTPS 页面上运行。根据http://www.opera.com/docs/userjs/using/ 的 Opera 文档:

用户 JavaScript 不会加载到使用 Opera 访问的页面上: 协议。默认情况下,它也不会加载到使用访问的页面上 HTTPS: 协议。

该问题的解决方案在文档下方稍远:

如果您想在这些页面上运行用户 JavaScript,您需要 在opera:config中启用用户Javascript on HTTPS设置。

感谢伊恩的支持。 :)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-20
    • 1970-01-01
    相关资源
    最近更新 更多