jQuery/Ajax 加载的 DOM 脚本何时实际执行?

2024-02-15

好吧,我觉得问这个问题有点愚蠢。类似问题有很多点击,但我似乎无法回答正确。如果我通过 jQuery/Ajax 修改 DOM,加载的脚本何时实际解析/执行?

下面的代码适用于 F/F,但不适用于 Chrome 或 Opera。 “工作”意味着它执行“do_init()”没有错误。加载的脚本(实际上是一个 svg 文件;“file.svg”)定义了“do_init()”(位于“static”脚本中)所需的许多变量。这些变量对 F/F 可见,但对 Chrome 或 Opera 不可见(“变量 xxx 未定义”)。在所有 3 种情况下,文件/脚本都正确加载到 DOM 中,并且包含<svg>,有一个<script>在里面。

我可以通过重新安排代码让它在 Opera 中工作(svg 显示)(或在 F/F 中中断),但不能在 Chrome 中工作。使用 .success 和 .complete 没有区别。

Thanks.

<head>
...
<script type="text/javascript" src="do_init.js"></script>          
<script type="text/javascript"><![CDATA[
jQuery(document).ready(function() {
   ...
   $("#submit").click(function(e){
      e.preventDefault();
      var jqxhr =
         $("#svg").html(ajax_load).load("file.svg", function(response, status, xhr) {
            if(status == "error") {
               var msg = "Error: ";
               $("#error").html(msg + xhr.status + " " + xhr.statusText);
            } else {
               do_init(); // Ok in F/F, not in Chrome/Opera
            }
      });
   });
});
]]></script>
</head>
<body>
<button id="submit" type="button">Click Me!</button>
<div id="svg"></div>
</body>

EDIT 1

事实证明,它们从未被执行过——至少在 IE9、FF8、Chrome、Opera 和 Safari 中是这样。他们are在FF7中执行。我刚刚编写了一个最小的测试页面,它对脚本进行 Ajax 加载,这只是一个警报。这仅在 FF7 中显示警报。我也尝试过将脚本包裹在<svg>,这没有什么区别。


这就是为什么建议您将 javascript 放在文档末尾、正文末尾的部分原因。

一般情况下,javascript遇到就执行;如果将其放在文档的顶部,它将在加载过程中较早运行,如果放在末尾则较晚运行。但是,当使用库的“onLoad”或“domReady”功能时,您会将执行推迟到稍后的时间。

请参阅 jQuery 文档以获取更多信息:http://api.jquery.com/ready/ http://api.jquery.com/ready/

虽然 JavaScript 提供了在渲染页面时执行代码的 load 事件,但只有在完全接收到所有资源(例如图像)后,才会触发该事件。在大多数情况下,一旦 DOM 层次结构完全构建完毕,脚本就可以运行。传递给 .ready() 的处理程序保证在 DOM 准备好后执行,因此这通常是附加所有其他事件处理程序并运行其他 jQuery 代码的最佳位置。当使用依赖 CSS 样式属性值的脚本时,在引用脚本之前引用外部样式表或嵌入样式元素非常重要。

EDIT我误读了你问题的细节。动态加载的脚本会立即解析,但是onLoad事件可能(也可能不会!)根据加载脚本的 HTTP 传输方面触发,而不是根据加载脚本的解释触发。通常,这很好(尽管有些浏览器不能可靠地触发事件 - IE,看着你),但你所追求的时间不是脚本被获取的时间,而是实际解析和活动的时间。这些应该在几毫秒内,通常使得差异毫无意义。

使用此技术解决问题有一些不同的看法,其中一些已讨论here http://www.ejeliot.com/blog/109 and here http://unixpapa.com/js/dyna.html- 但似乎没有人具体提到 Chrome 是麻烦的根源。也就是说,轮询所包含脚本(通过超时)的建议方法似乎是建议中最不容易失败的方法,尽管这也是我最不喜欢的解决方案。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

jQuery/Ajax 加载的 DOM 脚本何时实际执行? 的相关文章

  • Rails3/will_paginate/Ajax - 下一个/上一个链接无法正常工作(这是一个错误吗?)

    我正在遵循 使用ajax分页 http railscasts com episodes 174 pagination with ajax railscast 用于我的 Rails 3 应用程序 一切似乎都运行良好 除了上一个和下一个链接根本
  • jquery中文本区域自动调整大小

    我怎样才能做一个
  • 如何绑定div宽度/高度来形成字段?

    我想创建多个div我可以移动和调整大小 并绑定它们width height等到数组中的对象 因此 如果我创建六个 div 我的数组中有六个对象 每个对象都有 width height etc 我不太明白如何使用 knockout js 将输
  • Jquery:选择器找不到类?

    我正在尝试推进 Jquery autcomplete 功能 我希望 Jquery 自动完成在表中创建新行 到目前为止 这有效 但我希望 Jquery 添加一个删除按钮 因此用户可以删除他添加的项目之一 document ready func
  • JQuery hide() 和 fadeOut() 、 show() 和 fadeIn() 之间的区别

    我是 jQuery 新手 目前 我正在我的跨平台移动应用程序之一中使用 jQuery 我需要根据各自的条件隐藏和显示我的一些页面内容 我发现以下两种方法对我来说效果很好 myControlId fadeOut myControlId hid
  • 简单模式对话框中链接的 Tab 键顺序

    我正在使用优秀的 jquery simplemodal 对话框插件来显示项目列表 这些项目包含超链接 除了模式对话框中的链接不会作为选项卡顺序的一部分出现之外 一切都很好 我尝试显式设置 tabindex 但由于某种原因 只有输入元素按 T
  • Jquery 组合 SlideUp/Down 并单击

    我创建了两个脚本 其中一个具有向上滑动和向下滑动命令 这些命令在页面加载时作用于计时器 第二个是单击事件 其中单击链接时执行向上 向下滑动命令 这两个脚本都是单独工作的 但我无法让它们一起工作 这是定时向上 向下滑动脚本 document
  • 删除数据表列中的额外填充

    你好 我创建了 JQuery DataTables 如下所示 所以我的问题是如何删除 图片 列中过多的填充 这就是我初始化表的方式 violators tbl DataTable aoColumnDefs bSortable false a
  • jqgrid删除:没有获取值

    我使用 JSP 和 Servlet IDE Eclipse 数据库 Oracle10 开发 Web 应用程序 我在用JQGRID以表格格式显示数据 我还想要添加 编辑 删除的功能JQGRID 到目前为止我已经完成了编辑功能 现在我想要Del
  • ajax推送服务器

    好吧 我最近写了一个ajax推送脚本 其中后端的php在等待某人更新时处于休眠状态 但是休眠的进程占用了大量的cpu 关于如何防止这种情况的任何想法 我猜我必须要么找到一个可以使用线程休眠的程序 要么用我不太熟悉的 python 或 c 编
  • 如何在 jQuery 中获取 ul 列表中 li 的第一个 href 链接

    我有以下清单 ul class tabs li a href testlink php First link a li li a href testlink2 php Second link a li ul 我想获取第一个链接的 href
  • 在 Wordpress 站点中进行 AJAX 调用时出现问题

    我在使用 Wordpress 站点功能的 AJAX 部分时遇到了一些问题 该功能接受在表单上输入的邮政编码 使用 PHP 函数来查找邮政编码是否引用特定位置并返回到该位置的永久链接 我的第一个问题是关于我构建的表单 现在我的表单操作是空白的
  • 如何监听 jQuery AJAX 请求?

    以下两种实现 ajaxRequest 1 2 的方法应该是等效的 话说回来 为什么验证回调已执行的单元测试 3 在 1 中成功而在 2 中失败 我应该如何重写测试 3 来监视 2 中的成功回调 如果我尝试stub jQuery ajax使用
  • jquery.validate 中是否有一个函数可以像重置表单一样重置单个字段?

    我想调用 jquery 函数来手动删除单个字段中的错误并重置错误标记 是否有一个函数可以执行此操作 类似于 resetForm 函数 您可以执行以下操作来验证单个字段 your field valid 也许它会对某人有所帮助 Thanks
  • 动态地将工具提示文本设置为 div 元素

    我正在尝试动态地将工具提示文本设置为容器 div 并对我刚刚添加到有序列表的每个 div 元素 elem Alias Status 使用 jQuery function addNewElement elem var li li li li
  • 将div设置为隐藏,延时后可见

    我试图在 X 时间后 也许甚至在随机时间之后 但现在我们只做固定时间 在黑色背景上出现一个黄色方块 function initialSetup if document getElementById yellow null document
  • ajax4jsf死了吗?还有哪些其他适用于 JSF 的 AJAX 库?

    我目前正在使用JBoss RichFaces http www jboss org jbossrichfaces 我正在从事的项目的 JSF 组件库 一般来说 它工作得很好 特别是 ajax4jsf A4J 提供的 AJAX 支持 但我发现
  • 如何使用 JQuery 动态排序

    如果我有一个下拉列表和一个列表框 有没有办法使用 JQuery 根据下拉列表对列表框进行排序 举个例子会很有帮助 这会改变下拉菜单中的顺序 您必须根据自己的标准设置顺序
  • JQuery 图像上传不适用于未来的活动

    我希望我的用户可以通过帖子上传图像 因此 每个回复表单都有一个上传表单 用户可以通过单击上传按钮上传图像 然后单击提交来提交帖子 现在我的上传表单可以上传第一个回复的图像 但第二个回复的上传不起作用 我的提交过程 Ajax 在 php 提交
  • 如何从图像输入中获取 xy 坐标?

    我有一个输入设置为图像类型

随机推荐

  • 使用 HTML5 文件阅读器并将其发送到 Leaflet Omnivore

    我正在使用 Leaflet JavaScript 并遵循本教程 https www html5rocks com en tutorials file dndfiles https www html5rocks com en tutorial
  • 来自 socket.io 的新 cookie 值不起作用?

    我尝试对多个浏览器窗口 页面使用socket io id 用于 SNS auth process 使用凡奥特 http everyauth com 该项目基于express http expressjs com 这是我的项目设计 维护 so
  • 如何比较两个DateTimeOffSet?

    我有一个 DateTimeOffSet 类型的变量 我想过滤 2010 年 1 月 1 日之后创建的所有项目 所以我写了以下查询 var date new DateTimeOffset 2010 01 01 0 0 0 new TimeSp
  • 如何在 SQL Server 中编写(MySQL)“LIMIT”?

    如何将带有 LIMIT 的 MySQL 查询转换为 SQL Server 查询 SELECT FROM tableEating WHERE person identity LIMIT 1 LIMIT 在 T SQL 中不起作用 使用 TOP
  • VS 2013 多设备混合应用程序无法部署到设备,未找到设备

    我使用新的 VS 2013 Phonegap cordova 模板来创建混合应用程序 It all works fine using emulators and the ripple media emulators but when i c
  • 如何使 javascript 与 Ajax UpdatePanel 一起工作

    我正在尝试在我的表单上添加验证 我在表单字段中使用 AJAX 控件 当我删除更新面板和 AJAX 控件时 我的验证开始工作 但是当将两者放在一起时 我的验证不起作用 我怎样才能让他们一起工作
  • 将字节数组打印到热敏打印机 Java

    我正在使用 java 应用程序对 FedEx 进行 Web 服务调用 并尝试将标签打印到本地 USB 连接的热敏打印机 我将从 FedEx 获取字节数组作为响应 并希望将其打印到连接热敏打印机的客户端计算机 DocAttributeSet
  • 将对象从 JSP 页面传递回 Servlet

    简而言之 我想知道如何通过object从 JSP 页面返回到 Servlet 具体来说 我有一个表单元素 其操作标记引用了 servlet 在提交表单时 我想嵌入一个object in HttpServletRequest要求object以
  • 加载 ASP.NET 网页时缺少 Underscore.js 的 Javascript“.map”文件 [重复]

    这个问题在这里已经有答案了 我有一个网页 它是在 Azure 上运行的 ASP NET 网站的一部分 目前已经运行良好一段时间了 出乎意料的是 我突然在浏览器尝试下载 Underscore js 的 map 时遇到问题 我做了一些阅读 显然
  • 翻译 date("d F Y (H:i) 函数 php

    我是巴西人 有一个 wordpress 插件使用 date d F Y H i date Output 2013 年 1 月 16 日 00 54 但葡萄牙语应该是 16 Janeiro 2013 00 54 我该如何更改它 PS 我认为日
  • 如何通过 Qt 样式表自定义 Qt 应用程序的标题栏?

    我可以在 Qt 样式表中自定义 Qt 应用程序的控件 但是 我找不到自定义标题栏的方法 我找到了一些解决方案 但这需要修改应用程序本身的代码 无论如何 您是否可以仅使用 Qt 样式表来自定义它 标题栏 http en wikipedia o
  • 避免快速自动链接框架

    我有一个示例项目 https github com Usipov SwiftAutoFrameworksLinkage由一个主要目标 LinkerTests 和一个依赖的动态框架 Dynamic 如果运行该项目 您将看到以下 dyld 二进
  • 通过 angularjs 中的路由进行重定向

    我有以下要求 应显示包含编辑和删除链接的所有项目的列表 当用户单击编辑时 应出现带有文本框和保存按钮的编辑表单 现在 当用户编辑数据并单击保存按钮时 应保存数据 并且列表页面应再次显示修改后的数据 一切正常 但我如何通过 AngularJS
  • SQL Server使用C#执行备份

    我研究了使用 C 通过 SMO 创建数据库备份的可能性 该任务非常简单 代码也很简单 我只有一个问题 如何检查备份是否真正创建 Sql备份 Sql备份 http msdn microsoft com en us library micros
  • 如何在不使用 QtCreator 的情况下将 dll 文件复制到 Qt 中的输出目录?

    我有一个基于 Qt 的应用程序 它使用许多在项目外部构建的 dll 这些 dll 被签入源代码 因为我们不会非常频繁地重建它们 它们需要几个小时才能构建 我不希望它们出现在主项目中 我想在构建完成后将这些 dll 复制到适当的目录 发布 调
  • Powershell 表达式没有给出结果

    我创建了一个应返回 OU 规范名称的表达式 一个小轮廓 Search ADAccount LockedOut UsersOnly Select Object Name SamAccountName Name OU Expression Ge
  • 在 Django 中将变量从模板传递到视图的更有效方法是什么?

    我的问题涉及将变量从模板传递到 Django 中查看 我知道如何在 URL 中以及通过表单传递变量 我遇到的第一个问题是 url 可以被操纵 这不是我想要的 有什么办法可以防止这种情况发生吗 现在这就是我的创可贴
  • 如何编写一个使用 image magick 将图像切成碎片的 bash 脚本?

    我有许多输入图像 其中包含多个较小的图像 所有图像都位于一行中 所有包含的图像尺寸相同 因此 例如 图像input png may be 480x48并包含 1048x48图像 全部排成一排 使用imagemagickconvert工具 或
  • 卸载App后如何删除数据?

    我正在开发一个 Android 应用程序 它在 SD 卡中创建一个文件夹并存储一些图像 我想在卸载应用程序时删除该文件夹 请指导我 简单 不可能 目前 当您自己的应用程序被卸载时 不会触发卸载事件 因此你无法以任何方式对此做出反应 唯一的例
  • jQuery/Ajax 加载的 DOM 脚本何时实际执行?

    好吧 我觉得问这个问题有点愚蠢 类似问题有很多点击 但我似乎无法回答正确 如果我通过 jQuery Ajax 修改 DOM 加载的脚本何时实际解析 执行 下面的代码适用于 F F 但不适用于 Chrome 或 Opera 工作 意味着它执行