前几天在写一个自己的小项目,用到iframe。但是在使用Juery操作iframe的时候发现了一些问题,弄了近20分钟才取到了iframe文档里面的DOM元素节点。原因是什么呢?

这就要讲一下$(document).ready和window.onload的一些小区别。  $(document).ready是在文档的大致DOMj结构生成时,就去执行了,然而window.onload是在HTML文件的所有

内容加载完毕以后才开始调用函数。所以,我一直写 $("#iframe").contents().find("#dom")  一直找不到的原因是,我在$(document).ready里面写得,文档内有全部加载,iframe的

src没有加载文档内容进来,但是$(document).ready已经执行了,它只管大致DOM结构出来就执行,而不是全部文档加载后执行,所以一直都拿不到iframe里面的DOM元素!!!

所以正确的做法是:


        1.   要获取iframe里面的DOM,必须在window.onload里面写,才能获取DOM元素对象。例如


        /./正确做法

         window.onload = function(){

 

                 $("#iframe").contents().find("#dom");    //此时能获取到iframe的DOM元素

          }


      //错误做法

       $(function(){


              $("#iframe").contents().find("#dom");   //获取不到DOM元素

      });


        2.第二点要讲的是   checkbox动态改变checked属性。使用attr会遇到坑


         本来想做一个checkbox点击全选/全取消。   首先判断attr("checked")是否选中,已经选中,然后removeAttr("checked"),如果不是,则添加属性  attr("checked",true)。

    逻辑上这样的判断是没有任何问题的。但是你一运行只能实现一次效果,后面的效果就没有了。也就是说点击全选,然后全选成功,再点击取消全选也成功。再点击,无效。

         原因:    jquery1.4以后新增 prop这个函数。和prop的效果大致也是一个意思。都是属性。  但是attr是文档节点的属性 ,然而prop是JS对象的属性。  所以我怀疑,用attr去

操作的时候,removeAttr就真地移除了checked="checked"。之后再怎么操作都不行了。   所以一下改用prop直接解决问题。

          总结:  能用prop的地方,不要再使用attr了。attr也是依赖于prop实现的,所以用attr可能会出现一些问题。搞得我以为自己的逻辑出错了,排查半天。    


     3.PHP中再Linux服务器上部署,可以采用ln  -s  软连接的形式,访问到当前网站目录的根目录的上一级目录或者更多。  

使用php访问到软连接,会去执行软连接所链接的目录/文件。一般可以做项目的伪装,或者安全性。后面有待测试,不过这是个好办法,隐藏/添加目录url形式。不用去框架

router做任何配置。

GitHub 加速计划 / li / linux-dash
10.39 K
1.2 K
下载
A beautiful web dashboard for Linux
最近提交(Master分支:2 个月前 )
186a802e added ecosystem file for PM2 4 年前
5def40a3 Add host customization support for the NodeJS version 4 年前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐