document.write() 在 Firefox 的用户脚本中不起作用

2023-12-14

我有一些使用的用户脚本

var tab = window.open('', '_blank');
tab.document.write(myCustomHtml);
tab.document.close();

向用户显示输出(myCustomHtml 是我之前在代码中定义的一些有效的 HTML)。从版本 27 开始,它在 Firefox 中的工作就变得很糟糕,现在我只得到一个空文档。没有任何控制台错误。

使用 Firefox 控制台检查时,新打开的文档只有此内容

<html>
    <head></head>
    <body>
    </body>
</html>

而源代码是空的。

该代码可以在 Chrome 中运行。

我需要对较新的 Firefox 版本 (27+) 和更新的 Greasemonkey (1.15) 进行任何修改吗?我还没有发现任何最近向 Firefox 报告的有关此问题的错误。

这是一个测试脚本

// ==UserScript==
// @name           document.write() test
// @namespace      stackoverflow.com
// @description    tests document.write()
// @include        https://stackoverflow.com/questions/22651334/*
// @include        http://stackoverflow.com/questions/22651334/*
// @version        0.0.1
// ==/UserScript==

var tab = window.open('', '_blank');
tab.document.write('<html><head></head><body><ul><li>a</li><li>b</li><li>c</li></ul></body></html>');
tab.document.close();

我不确定 Greasemonkey 或 Firefox 是否已经犯了这个错误,但是window.open从 Greasemonkey 脚本到空白页现在会触发同源政策违反。
同时,页面范围、控制台范围和 Firebug 的控制台都工作正常。

Greasemonkey 范围给出:

SecurityError:操作不安全

whether @grant none使用与否。

这,加上一般无用的GM_openInTab(),让我怀疑这是一个 Greasemonkey bug。我现在没有时间研究它,但是提交错误报告, 如果你希望。

为了使其在最新版本的 Firefox (28.0) 和 Greasemonkey (1.15) 上运行,我必须执行以下操作:

  1. 告诉我的弹出窗口拦截器(暂时)允许来自 stackoverflow.com 的弹出窗口。
  2. 将弹出代码注入页面范围。
  3. 使用显式的about:blank为网址。
  4. 等待新窗口加载。

这是一个适用于最新 FF+GM 的完整脚本releases:

// ==UserScript==
// @name        document.write () test
// @description tests document.write ()
// @include     http://stackoverflow.com/questions/22651334/*
// ==/UserScript==

function fireNewTab () {
    var newTab = window.open ('about:blank', '_blank');
    newTab.addEventListener (
        "load",
        function () {
            //--- Now process the popup/tab, as desired.
            var destDoc = newTab.document;
            destDoc.open ();
            destDoc.write ('<html><head></head><body><ul><li>a</li><li>b</li><li>c</li></ul></body></html>');
            destDoc.close ();
        },
        false
    );
}

addJS_Node (null, null, fireNewTab);

function addJS_Node (text, s_URL, funcToRun, runOnLoad) {
    var D                                   = document;
    var scriptNode                          = D.createElement ('script');
    if (runOnLoad) {
        scriptNode.addEventListener ("load", runOnLoad, false);
    }
    scriptNode.type                         = "text/javascript";
    if (text)       scriptNode.textContent  = text;
    if (s_URL)      scriptNode.src          = s_URL;
    if (funcToRun)  scriptNode.textContent  = '(' + funcToRun.toString() + ')()';

    var targ = D.getElementsByTagName ('head')[0] || D.body || D.documentElement;
    targ.appendChild (scriptNode);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

document.write() 在 Firefox 的用户脚本中不起作用 的相关文章

  • JavaScript 添加布尔值

    console log true true 2 console log typeof true true number console log isNaN true true false 为什么两个布尔类型相加会产生一个数字 我有点理解 如
  • 显示具有多个父代的 D3 树

    我目前有this http bl ocks org mbostock 4339083图已实现 我希望在描述具有多个父节点的子节点时保持结构和可折叠性 有没有办法做到这一点 我研究了力图 但我也想保留一组层次结构 这意味着 1 级的父级可以有
  • Firebase,只得到新的孩子[重复]

    这个问题在这里已经有答案了 var firebase new Firebase firebaseRef on child added function snapshot 这将接收所有元素 有没有办法在创建新的 Firebase 引用时不接收
  • Vue 3 Composition API 提供/注入在单文件组件中不起作用

    我正在使用 Composition API 在 VueJS 3 中创建一个库 我实现了提供 注入 如中所述docs https v3 vuejs org guide composition api provide inject html i
  • 使用 Angular 指令禁用文本选择

    我正在学习 JavaScript 和 AngularJS 我想使用 Angular Directive 禁用文本选择 我有该函数的 JavaScript 代码 function clearSelection if document sele
  • 在版本 4.4.6 中禁用 ckeditor 上下文菜单

    我在 Rails4 项目中使用 ckeditor 我尝试了 ckeditor gem 和 ckeditor rails gem 来提供 ckeditor 库 这里有多个帖子 人们希望删除 ckeditor 上下文菜单 以便可以显示本机浏览器
  • 通过 JavaScript 获取表单名称

    我有一个简单的问题 但我在网上找不到好的解决方案 我有这个 HTML 代码
  • IntersectionObserver是否支持水平滚动观察?

    我制作了几个垂直滚动 IntersectionObserver 模块 但我对水平滚动感兴趣 根将是 div 观察目标将是 img 我想观察当 img 放大但 div 保持视口宽度时的变化 我什至不确定移动 Safari 是否会将缩放后的图片
  • JavaScript 验证和 PHP 验证?

    我正在使用 jquery 验证插件来验证空表单 我还应该在 PHP 中检查一下以确保 100 正确吗 或者用 javascript 验证就可以了 谢谢 您应该始终在服务器上进行验证 如果用户以某种方式不使用 Javascript 提交表单
  • 导航栏下拉菜单(折叠)在 Bootstrap 5 中不起作用

    我在尝试使用以下命令创建响应式菜单或下拉按钮时遇到问题Bootstrap 5一切似乎都正常 导航图标和下拉图标出现 但它不起作用 当我单击nav图标或dropdown按钮 无dropdown menu apears 我想特别提到的是 我还包
  • 按下回车键时不刷新页面

    我遇到了一些问题 只要表单中有输入 回车键就会触发页面刷新 下面的代码 如果按下回车并且文本区域 input 中没有输入任何文本 则不会刷新页面 但是如果按下回车并且 input中有输入或者光标位于文本区域 我不确定是什么触发了它 因为 s
  • JavaScript 中的 Promise 有什么意义?

    一个承诺是一个 可能现在可用 或将来可用 或永远不可用的值 来源 MDN 假设我有一个想要处理图片的应用程序 图片已加载 例如在算法在后台使用它之后 或某种其他类型的延迟 现在我想检查一下图片是否可以在future 通过使用承诺 而不是回调
  • 如何使用 Javascript 设置查询字符串

    有没有办法使用 javascript 设置查询字符串的值 我的页面有一个过滤器列表 单击该列表时 它将更改右侧的页内结果窗格 我正在尝试更新 url 的查询字符串值 因此如果用户离开页面 然后单击 后退 按钮 他们将返回到最后一个过滤器选择
  • onclick 事件中未调用函数

    我想在每个 YouTube 链接的末尾添加一些 HTML 以在 litebox 中打开播放器 到目前为止 这是我的代码 document ready function var valid url new RegExp youtube com
  • 将 Firebase 云消息传递与 Windows 应用程序结合使用

    我在 Android 和 iOS 应用程序中使用 Firebase Cloud Messaging 但是我还有此应用程序的 Windows Mac OS 版本 我想保留相同的逻辑 我知道 Firebase Cloud Messaging 可
  • 改变 JavaScript 中的顶部填充

    以下是我在 css 中设置顶部填充的方法 body font size font size px margin 0 padding 100px 0 20px 0 width 100 important 如何使用最简单的 javascript
  • LeafleteachLayer函数不会迭代所有Layer

    使用 GeoJSON 数据数组创建一些标记 getJSON GetLocationsServlet function data L geoJSON data onEachFeature onEachFeature addTo mymap G
  • 使用 Javascript 设置 cookie [重复]

    这个问题在这里已经有答案了 我正在尝试构建我的第一个移动应用程序 它需要连接到我的 mysql 数据库并使用 json 返回数据 这很好 目前我有一个登录系统 一旦确定用户名和密码存在 它就会返回一条成功消息 对于下一步 我想在我的页面上使
  • 使用javascript动态更新css内容

    需要将 css 更新为动态值 我不确定最好的方法是什么 div style zoom 1 div 缩放级别将根据窗口大小调整触发 应用程序将相应缩放 我将此应用程序加载到 cordova 中并让它在 iPAD 中运行 然后我意识到需要使用
  • 在 iOS 7 Safari 中,如何区分通过边缘滑动与后退/前进按钮的 popstate 事件?

    在 iOS 7 Safari 中 现在有两种后退 前进导航方式 使用底部的传统后退 前进按钮箭头或从屏幕边缘滑动 我正在使用动画在 ajax 应用程序中的页面之间进行转换 但如果用户通过边缘滑动进行导航 我不想触发该转换 因为这本身就是一个

随机推荐

  • 递归 Prolog 谓词?

    我目前正在开发一个项目 我想在 Prolog 中实现辅助谓词 break down N L 其工作原理如下 break down 1 L L 1 false break down 4 L L 1 1 1 1 L 1 1 2 L 1 3 L
  • 从其他应用程序调试 C# 代码

    我正在从 QTP 加载 dll c qtp测试开始时是否可以调试c 代码 是的 您可以调试 dll 但是您将需要源代码 除非您想查看反汇编 并且您还需要程序集的 PDB 调试符号 设置起来非常简单 启动QTP应用程序 启动视觉工作室 打开源
  • Struts2:会话问题(反向代理后)

    我将会话参数存储在使用 SessionAware 接口在操作中获取的 Struts2 会话映射中 我的应用程序位于 MyApp 路径中 在 Apache 服务器上设置 struts2 应用程序后 使用反向代理重定向来生成 URLhttp w
  • 将 Objective-C 框架导入 Swift 项目时,在桥接标头中获取“文件未找到”

    我有一个 Swift 项目 我正在尝试为其导入基于 ObjC 的框架 该框架位于项目路径下的目录中 并由 Xcode 中的项目引用 它还被添加到项目的 构建阶段 页面中的 链接二进制文件与库 中 但是 由于某种原因 我似乎无法将框架包含在桥
  • 在blazor中实现基于LDAP的授权

    我有一个问题和简单的请求 我正在尝试在 blazor 中创建简单的身份验证和授权机制 问题是该机制的基础不是数据库而是 ldap 所有示例和教程都基于数据库存储 据我现在的理解 在 blazor 中它看起来像这样 在startup cs中
  • 了解雷尼斯

    我试图为 CPU 密集型应用程序提供最低的调度优先级renice 19 Linux 3 11 但是 它似乎没有按预期工作 或者我有理解问题 让我描述一下我尝试过的两种方法 我期望通过这两种方式我会得到相同的结果 但我没有 考虑应用loop成
  • opencv库中的houghcircle函数中的dp参数到底是如何工作的?

    我试图理解 houghcircles 功能 但我不完全理解如何dp影响结果 抬头看http docs opencv org modules imgproc doc feature detection html highlight hough
  • 如何在别人的 Windows 机器上的虚拟环境中本地运行 python 脚本并使其始终工作?

    我正在为同事制作脚本 工具 希望他们可以从共享驱动器在 Windows 计算机上使用它们 当然 Python 版本和库不一致 尝试这样做会很混乱 他们只是希望它单击运行即可工作 如果他们必须使用命令行或 pip 则意味着他们不会使用该工具
  • UAC提示显示msi的临时随机程序名称,能否显示正确的名称?

    我正在为 Windows 构建 MSI 安装程序并使用 Signtool 对该安装程序进行签名 当我运行 msi 进行测试时 会出现 UAC 用户帐户控制 提示 询问我是否允许继续安装 这很好 但提示显示了许多字段 并且对于 程序名称 字段
  • 正则表达式 - 从字符串中提取第一个单词

    我想解析下面的文本 收件人姓名 Tracy Chan SKU 103990 我只想提取 Tracy 即 收件人姓名 之后的第一个单词作为名字 所以我尽可能 lt Recipient Name SKU gm但它只给了我 Tracy Chan
  • 检查映射中的所有值是否相等

    我需要检查地图中的所有值是否都相等 我有一种方法来执行此任务 但想使用库或本机方法 限制 Java 5 Apache Commons 库 public static boolean isUnique Map
  • 拦截器 preHandle() 未重定向到 login.html

    我有一个春季应用程序 我引入了一个sessionInterceptor来防止直接访问index jsp 如果用户未登录 则不应访问index jsp 而应重定向到login html 该代码正在调用 preHandle 方法并运行所有代码
  • 从外部应用程序/Javascript 访问 MS CRM Web 服务

    有没有办法从非 CRM 网页 即不在 CRM 表单中的加载或保存事件中 而是从独立网页 的 JavaScript 调用 MS CRM Web 服务 第二个问题 有没有办法从 VBScript 调用 MS CRM Web 服务 理想情况下 我
  • jQuery UI Sortable - 当连接项为空时 connectWith 困难

    我在一个页面上有几个可排序的表格 大部分都是相连的 但有一个只能拖出 不能拖进去 我似乎无法将项目拖到这些空表之一中 这是一个 jsFiddle http jsfiddle net jasonbutz ZLzU3 2 EDIT 另外 还有一
  • 将 MEF 与 C# 结合使用,如何从插件调用主机上的方法?

    我正在尝试使用以下命令向我的 C 应用程序添加插件扩展性托管可扩展性框架 MEF 框架 到目前为止一切顺利 我的主 主机应用程序从定义的文件夹加载插件 并且可以从主应用程序调用它们的方法等 主机应用程序和插件都引用一个单独的 dll 程序集
  • windows系统字体规格是什么

    我目前正在尝试根据应用程序的当前字体重新调整应用程序的字体大小 为了做到这一点 我将使用WM GETFONT要获取字体并使用输入字体的宽度和高度通过方程式重新调整其大小 问题是它的返回值是系统字体 我不知道该字体的规格 谁能告诉我如何获取系
  • php数组中的jqGrid colModel参数

    我正在处理一个在最新版本中使用 jqGrid 的项目 问题是这个项目是 PHP 5 6 并使用 JSON 来 翻译 对话 到 jqGrid 框架 并且 colModel 参数都在 PHP 数组内 它工作完美 但我无法使用实际项目的代码触发
  • 在 Vaadin 7 中,将数据/参数传递给 BrowserWindowOpener 的新 UI 实例?

    我成功打开新的浏览器窗口浏览器窗口开启器 问题 如何将一些信息传递给新实例化的 UI 子类 该语法要求我指定要实例化的类 我如何与未来的实例进行通信 BrowserWindowOpener bookOpener new BrowserWin
  • 基于 lambda 表达式的反射与普通反射

    普通反射和可以使用 lambda 表达式 例如 采用形式 完成的反射之间有什么区别构建您自己的 MVVM public void NotifyOfPropertyChange
  • document.write() 在 Firefox 的用户脚本中不起作用

    我有一些使用的用户脚本 var tab window open blank tab document write myCustomHtml tab document close 向用户显示输出 myCustomHtml 是我之前在代码中定义