我尝试在 Firefox 6 的地址栏中运行此 JavaScript 代码:
javascript:alert("Hello")
我得到一个
参考错误:警报未定义。
虽然它曾经在 Firefox 5 中运行良好,但仍然可以在 Opera、Safari 和 Chrome 上运行。我该如何解决?
我尝试在 Firefox 6 的地址栏中运行此 JavaScript 代码:
javascript:alert("Hello")
我得到一个
参考错误:警报未定义。
虽然它曾经在 Firefox 5 中运行良好,但仍然可以在 Opera、Safari 和 Chrome 上运行。我该如何解决?
根据此评论,目前似乎不允许使用javascript:
和data:
URL(直接在地址栏中):
仅供参考,我可能会将这个错误分成多个短期和长期修复。
短期:禁止将 javascript:URL 粘贴到 URL 栏中
长期:另外要求在书签管理器中将书签列入“白名单”,然后才能运行 JavaScript
javascript: 实际上并没有被忽略——它们是运行的,但是在一个“空”的上下文中,它没有你期望的任何常见的 DOM 方法,所以最常见的用法(例如 javascript:alert(1))只是抛出 (因此被有效地忽略)。javascript:1+1 工作正常,不过。
现在:
我该如何解决?
你不能,你必须等到他们决定一个合适的解决方案。正如评论所说,书签可以工作,但必须明确允许。如果您只想测试代码,请使用Firebug或新的Scratchpad功能。
Felix 的回答正确地说明了为什么javascript:
URL 栏中不再起作用。
在更换了这一点,如果你想调试你的网页,是Web控制台(不要用错误控制台相混淆)。在紧凑菜单中,它位于 Web Developer 下;在完整菜单栏中,它位于工具下。或者您可以按 ctrl-shift-K(在 Mac 上按 cmd-shift-K)。带有大于号的栏是 JavaScript 提示;在那里输入的代码将在当前页面的上下文中进行评估。可以单击该栏上方带下划线的区域中的任何内容以显示检查器窗口。
如果您的可点击书签坏了并且您想要它回来,您可以使用自定义按钮Firefox 扩展创建一个可点击按钮。
按钮优于从 Scratchpad 运行的优点:
扩展有点特别,因为按钮是在 Firefox chrome 级别运行的,所以他们更有特权(可以与浏览器的 API 交互),并且普通 JS 和按钮代码之间没有一对一的对应关系(它需要一些调整)。更确切地说,document
并且window
从按钮看到没有您所期望的人。
但是,您可以将“好”window
和分配document
给您的变量,然后处理这些变量(最好不要重新定义窗口;)
这是我编写的示例代码,它在 Fx10 中运行良好:
// get proper 'window' and 'document' into our private variables
var theWindow = window.top.getBrowser().selectedBrowser.contentWindow;
var theDocument = theWindow.document;
// here we go
var input = theDocument.getElementById("foo");
input.focus(); // just to show you it's working, unnecessary in fact
// simulate keyboard event
var evt = theDocument.createEvent("KeyboardEvent");
evt.initKeyEvent ("keypress", true, true, theWindow ,
0, 0, 0, 0, 0, 65); // 65 == "A"
input.dispatchEvent(evt);
// show alert after 2 sec
theWindow.setTimeout( function(){
input.value += "B";
theWindow.alert(input.value); // alerts "AB"
},2000);
而不是直接使用全局函数(如setTimeout
, 或alert
),您必须放在theWindow.
它们之前,并将document
/替换window
为本地theDocument
/theWindow
并且它似乎正在工作。但是,我还没有对非常复杂的情况进行彻底的测试。
要添加按钮,请右键单击您已有的任何按钮,然后选择“添加新按钮...”。