zoukankan      html  css  js  c++  java
  • 两种在超链接中定义的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)"即可。

    出处:http://www.zhaiqianfeng.com    
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    asterisk 使用 g729 g723
    读书笔记《一线架构师》
    能和LoadRunner匹敌的VS2010/2012Web负载测试
    总结 设计模式,企业应用架构模式,架构模式
    聊聊Memcached的应用
    WPF小试牛刀
    读书笔记《Hadoop开源云计算平台》
    高性能与可扩展
    闲聊下架构、框架,以及架构师...
    自己写框架 实践 (Event Framework)
  • 原文地址:https://www.cnblogs.com/zhaiqianfeng/p/4616941.html
Copyright © 2011-2022 走看看