当前位置: 首页 > 面试题库 >

触发$ document.ready(因此执行了我无法修改的AJAX代码)

周鸿光
2023-03-14
问题内容

我的要求如下:

  • 我有一个丰富的网页,该网页有时会div通过AJAX 将HTML加载到其中。
  • 我检索的HTML确实有javascript(<script>...</script>
  • 检索到的javascript包含$('document').ready( ... )部分
  • 无法 修改检索到的javascript;它来自外部库
  • 我已经加载AJAX时调用了一个javascript函数。我试图通过执行以下操作来“欺骗”它:
    function AjaxLoaded() {
    

    $(‘document’).trigger(‘ready’);
    }

恐怕这并没有解决。

我已经看到了一些 关于响应,它们通过更改AJAX上返回的代码来“规避”这个问题(使其成为函数,并在加载后调用它,或者只是删除$(document).ready())。我需要强调的是,在这种情况下,我无法更改检索到的代码。


问题答案:

经过一些研究,我创造了一种使其工作的方法。

这是我的测试,表明它可以正常工作:http :
//www.antiyes.com/test/test2.php

这是相关代码:

<script>
    // easy copy of an array
    Array.prototype.copy = function() {
        return [].concat(this);
    };

    // this function is added to jQuery, it allows access to the readylist
    // it works for jQuery 1.3.2, it might break on future versions
    $.getReadyList = function() {
        if(this.readyList != null)
            this.myreadylist =  this.readyList.copy();      
        return this.myreadylist;
    };

    $(document).ready(function() {
        alert("blah");
    });

</script>

<script>

    // this should be added last so it gets all the ready event
    $(document).ready(function() {
        readylist = $.getReadyList();
    });

</script>

然后在体内我有:

<input type="button" onclick="$(readylist).each(function(){this();});" value="trigger ready" />

基本上,我所做的就是在jQuery中添加了一个函数,该函数在清除readyList之前将其复制出来,然后可供您使用。

看起来下面的代码不起作用:

function AjaxLoaded() {
    $(document).trigger('ready');
}

删除报价document



 类似资料:
  • 问题内容: 我有一个custom.js文件,其中有几个单击并绑定了其他方法的元素。整个文件封装在document.ready()中,一切正常。但是,当我执行AJAX发布时,显然不会为当前页面再次触发document.ready()。无论如何,我是否可以再次触发document.ready(),还是需要让命名函数中的所有内容从我的create.js.erb中调用它们? 问题答案: 您总是可以将所有内

  • 有一篇文章,有多个 h 标题,地址类似 https://path#<标题>,如果要实现滚动文章时更新地址栏的 hash 部分,如果使用 router.push() 方法,可以修改地址,但是会导致对应的标题置顶到顶部。 如何让其识别是滚动导致的更新,而其他的更新保持之前的行为?

  • 我正在尝试构建一个非循环树结构,每个节点由字符串标识,每个分支节点的类型为PrimMap。同一代上的所有节点都保存为映射中的Item对象。这是缩写代码: 错误消息是:/src/PrimMap。h: 314:57:错误:将“const PrimMap”作为“PrimMap::error PrimMap::add(const string)”的“this”参数传递 我看不出这个错误消息有什么意义——特

  • missedMSRB是一个包含2187个元素的列表,当尝试运行下面的代码段时 代码失败,出现异常。有什么建议,为什么我要进行并发修改,以及如何消除相同的修改

  • 如果我运行我的GAE应用程序,我会得到以下错误消息。我搞不清楚,问题出在哪里。MySQL驱动程序是最新的。重新配置了DBConnection。 版本:App-Engine:1.9.34GWT:2.7.0Java:1.8 Mai 18,2017年12:15:27 PM com.google.appengine.tools.development.appProxyLocalImpl日志schwerwi

  • 问题内容: 我正在使用以下代码批量插入CSV文件: 我具有FIRE_TRIGGERS属性,但触发器仍未执行。触发器肯定有效,因为如果我手动将其插入表中,它将执行。有什么解决的办法吗? 问题答案: 在批量导入操作期间,您的触发器将仅触发一次,因为它被视为影响多行数据的单个语句。 您的触发器应该能够处理一组行而不是单个行。也许这是原因,因为您的手动插入测试正常,并且批量导入失败。 MSDN文章的C部分