javascript - 神奇的iframe现象:居然能够自动触发onclick 事件,这是什么原因??
伊谢尔伦
伊谢尔伦 2017-04-11 09:56:34
[JavaScript讨论组]
<!doctype html>
<html lang="en">
 <head>
  <meta charset="UTF-8">
 </head>
 <body>
   <button id='chg'>change</button>
   <iframe id='frame' src=''></iframe>
   <script>
     function $id(id){
       return document.getElementById(id);
     }
     var btn=document.getElementById('chg');
     var tip=true;
     btn.onclick=function(){
        alert('你居然在按钮没有被按下的时候就触发了!!!');
     }

     (function(){
         var iList=document.getElementsByTagName('iframe');
         for (var i=0;i<iList.length;++i)
          {
             iList[i].onload=function(){
                
               this.style.height=this.contentWindow.document.documentElement.scrollHeight+'px';
             }
          } 
     }());
   </script>
 </body>
</html>
伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

全部回复(15)
阿神

兄弟这样看你看到了什么?

btn.onclick=function(){
        alert('你居然在按钮没有被按下的时候就触发了!!!');
     }(calegeca);
     
     
var calegeca = function() {
            var iList = document.getElementsByTagName('iframe');
            for (var i = 0; i < iList.length; ++i) {
                iList[i].onload = function() {

                    this.style.height = this.contentWindow.document.documentElement.scrollHeight + 'px';
                }
            }
        }();
        

尽量使用“;”号哦;在闭包前加,效果更好哦;

;(function(){
    //calegeca
}())
PHP中文网

iframe:这锅我不背。

怪我咯

[哭笑不得的表情]我觉的这题可以当做面试题来考了。看了好久。。。才懂[哭笑不得的表情]

PHP中文网

JS 大部分时候可以省略分号,除了以 () 或 [] 等开头的五种情况的时候。

ringa_lee
btn.onclick=function(){
    alert('你居然在按钮没有被按下的时候就触发了!!!');
 };

这里}后面缺个分号,你竟然想让iframe背锅

天蓬老师

所以 js 分号还是加的好。。。

巴扎黑

看了 评论 我才看明白 问题 。。。。。

PHPz

我还以为有黑科技。。

怪我咯

onclick方法后面没加分号。。。恰好后面跟了个自执行函数。。。

迷茫
  1. 函数声明不可以直接用()调用,函数表达式可以直接用()调用。

  2. “函数声明” 与 “函数表达式” 之间的区别就是 function 是不是那一行的句首的第一个单词。

  3. 函数声明 可以在声明所在的作用域中被调用, 函数表达式 只能在函数表达式中调用自己。

函数声明

function foo(){console.log(1)};
foo(); //=> 1 

函数表达式

var a = function bar(){}();
!function baz(){}();
(function baa(){}());

(function draw(){
    requestAnimationFrame(draw);
})();

draw(); //=> ReferenceError: draw is not defined

参考1

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号