gpt4 book ai didi

javascript - 如何正确插入 div 以从 jQuery 操作它们?

转载 作者:太空宇宙 更新时间:2023-11-04 16:18:30 25 4
gpt4 key购买 nike

这里我有一些代码来创建具有指定类的 div,并在这个 div 内部创建 iframe 来连接到我的聊天小部件

(function(){ 
var client_id = '1',
p= 'right',
vp = 'bottom';
h = '550',
dw = '400';
var d=document;
var w=window;

function l(){

var s = document.createElement('div');
s.id = 'chatrix_init_widget';
s.style = 'position: fixed; z-index:101010; '+p+': 0; '+vp+': 0; height:'+h+'px; width: '+dw+'px';
var ss = document.getElementsByTagName('body')[0].appendChild(s);

var i = document.createElement('iframe');
i.className = 'chatrix_iframe_container';
i.height = '100%';
i.width = '100%';
i.src = '//danialart.biz/chatrix/widget.php?c='+client_id;
var ss = document.getElementById('chatrix_init_widget').appendChild(i);

}
function s() {
var s = document.createElement('script');
s.type = 'text/javascript';
s.src = '//danialart.biz/chatrix/js/client_side.js';
var ss = document.getElementsByTagName('body')[0].appendChild(s);
}

if(d.readyState=='complete'){
l();
s();
}else{
if(w.attachEvent){
w.attachEvent('onload',l);
s();
}else{
w.addEventListener('load',l,false); s();}}})();

在名为 s() 的函数中,我创建了连接远程 jquery 文件函数的脚本标记,但此文件中的任何内容(执行 consolel.log 命令)都不起作用。不能点击,或者其他 jquery 操作根本不起作用。

最佳答案

iframes时经常出现这个问题都参与其中。我建议三种方法:

  1. 尝试 onload在您尝试放置 jquery 操作的元素上:

    $('#element').on('load',function(){
    //your action here for example click action
    $(this).on('click',function(){
    });
    });
  2. 尝试 onload在您的 iframe 上:

    $('.chatrix_iframe_container').on('load', function(){
    //do your actions here
    });

虽然有时以上都不起作用,但我使用 setInterval我通常不建议这样做,因为它被认为是不好的做法

  • 使用setInterval

     function myAction(){
    if($('#element').length){
    // do your actions here
    clearInterval(timer);
    }
    }
    var timer = setInterval(function(){myAction();},1000);
  • 我自己做了测试,我可以通过做以下修改让你的逻辑工作:

    1. 在您的 <head> 中添加 jQuery标签:

      <head>
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>

      </head>

    2. 替换脚本的开头:

      (function(){

    这样:

    (function($){ 

    3.在脚本末尾,使用以下内容:

    if(d.readyState=='complete'){
    l();
    s();
    }else{
    if(w.attachEvent){
    w.attachEvent('onload',function(){
    l();
    s();
    });
    }else{
    w.addEventListener('load',function(){l();s();},false);}}})(jQuery);
    </script>

    我已经复制了你的情况,现在它像这样工作,因为我发现 w.addEventListener是正在加载您的脚本的人,并且它甚至在 s() 之前添加了脚本标记( div )被添加到 DOM( l() )。这就是脚本不起作用的原因。

    希望有帮助

    关于javascript - 如何正确插入 div 以从 jQuery 操作它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40862613/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com