两种在超链接中定义的JavaScript脚本的不同


<a href="javascript:window.open('http://www.oseye.net');">空链接</a>
<a href="#" onclick="window.open('http://www.oseye.net');">空链接</a>

以上另种方式都可达到使用脚本打开一个oseye的窗口,但不同点如下:

  • 前者的脚本代码是在URL位置,充当URL,其实是在浏览器中的地址栏中执行的;
  • 后者的脚本代码是在HTML元素的事件属性中,是靠事件来触发执行的;

验证前者是在浏览器地址栏中执行(以下如果有乱码,请更改浏览器查看编码)

  1. 迹象一:可以直接IE浏览器中在地址栏中敲入脚本代码:
    javascript:window.open('http://www.oseye.net');

    然后回车,如下图:

  2. 迹象二:把代码
    <a href="javascript:window.open('http://www.oseye.net');">空链接</a>
    保存成HTML,使用Firefox浏览器打开,点击“空连接”,能看到如下图:

  3. 迹象三:如果把代码
    <a href="javascript:window.open('http://www.oseye.net');">空链接</a>
    和代码
    <a href="#" onclick="window.open('http://www.oseye.net');">空链接</a>
    分别保存HTML文档,使用IE打开,如下图:

    后者会询问出入安全考虑是否阻止执行,但前者没有。说明后者IE的ECMAScript解析引擎已经检测到脚本代码,而前者只有在点击“空链接”时才提示。

虽然两种浏览器的解析引擎不同,但我猜猜充当URL的脚本代码应该是在浏览器的地址栏中执行的。欢迎不同见解....

PS:前者打开窗口后,原窗口的内容变了,而且可能变为了"[object]"或"[object Window]",可以在脚本语句加上"void(0)"即可。

优质内容筛选与推荐>>
1、IntelliSense: "const char *" 类型的实参与 "LPCTSTR" 类型的形参不兼容
2、numpy的array分割
3、Install unifi controller on CentOS
4、从尾到头打印链表,不允许逆置原链表
5、FORM认证下,修改默认的登陆页面[原码]


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号