JavaScript警报在Firefox 6中无效

时间:2011-07-10 20:22:54

标签: javascript browser alert firefox6

我尝试在Firefox 6的地址栏中运行此JavaScript代码:

javascript:alert("Hello")

我得到了

  

ReferenceError:未定义警报。

它曾经在Firefox 5中运行良好,但仍适用于Opera,Safari和Chrome。我该如何解决?

3 个答案:

答案 0 :(得分:21)

目前似乎不允许使用javascript:data:网址(直接在地址栏中)as per this comment

  

仅供参考,我可能会将此错误分为多个,短期和长期修复程序。

     

短期:禁止将javascript:网址粘贴到网址栏中   更长期:另外要求书签在“白名单”中                书签管理器才能运行JavaScript

this is the "bug"已解决latest versionlast comment还声明:

  

javascript:实际上并没有被忽略 - 它们是运行的,但是在一个“空”的上下文中没有你期望的任何常用DOM方法,所以最常见的用法(例如javascript:alert(1))只是扔(因此被有效地忽略)。 javascript:1 + 1可以正常工作。

现在:

  

我该如何解决这个问题?

你不能,你必须等到他们决定采取适当的解决方案。正如评论所说,bookmarklet将起作用,但必须明确允许。如果您只想测试代码,请使用Firebug或新的Scratchpad功能。

答案 1 :(得分:10)

Felix的回答正确地说明了为什么网址栏中的javascript:不再有效。

替换,如果您正在尝试调试网页,则是Web控制台(不要与错误控制台混淆)。在紧凑的菜单中,它位于Web Developer下;在完整的菜单栏中,它位于工具下。或者你可以按ctrl-shift-K(macs上的cmd-shift-K)。带有大于号的栏是​​一个JavaScript提示符;输入的代码将在当前页面的上下文中进行评估。可以单击该下划线栏上方的任何区域以显示检查窗口。

答案 2 :(得分:1)

如果您的可点击书签被破坏而又想要它,您可以使用Custom Buttons Firefox扩展程序创建可点击按钮

从Scratchpad运行按钮的优势:

  • 您实际上可以保存书签(按钮),
  • 你可以有一个漂亮的自己的图标(创建一些图像,例如PNG文件,导入它并在新按钮对话框中输入base64_encode)。

扩展程序有点特殊,因为按钮在Firefox chrome级别运行,所以它们有点特权(你可以与浏览器的API进行交互),并且没有1到 - 普通JS和按钮代码之间的对应关系(需要一些调整)。更确切地说,从按钮看到的documentwindow不是您期望的那些。

但是,您可以将“好”windowdocument分配给变量,然后处理这些变量(最好不要重新定义窗口;)

这是我编写的示例代码,在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);

不必直接使用全局函数(例如setTimeoutalert),而是必须将theWindow.放在它们之前,并替换document / window使用本地theDocument / theWindow,它似乎正在运作。我没有彻底地测试它,但是非常复杂的情况。

要添加按钮,右键单击您已有的任何按钮,然后选择“添加新按钮...”。