将标头脚本传递给 AJAX 加载的内容

Pass header script to AJAX loaded content

本文关键字:加载 AJAX 脚本      更新时间:2023-09-26

当我用谷歌搜索信息时,jquerymobile(JQM)中的ajax加载不包含标头javascripts。参考主题如下:

jQuery 移动点击事件触发两次

http://demos.jquerymobile.com/1.1.1/docs/pages/page-scripting.html

我想知道 ajax 内容如何包含标头脚本。

我的示例脚本(不是真实脚本)是

在索引中.php

<header>
<script type="text/javascript" src="script-test.js"></script>
</header>
<div id="id<?php echo $product['product_id'] ?>">
    Content<?php echo $product['product_id'] ?>
</div>
<script type="text/javascript"><!--
 ajaxload content scripts
//--></script>

在索引 ajax 中.php

<div id="id<?php echo $product['product_id'] ?>">
 Content<?php echo $product['product_id'] ?>
</div>

**我尝试手动添加到索引 ajax.html。但是,它会触发错误(加载 js 的 2 倍)到不在 ajax 内的其他内容。

根据 jQuery Mobile FAQ:为什么我的脚本和样式没有加载?

当通过 AJAX 请求时,页面头部被忽略的原因是重新执行相同 JavaScript 的可能性非常高(在站点的每个页面中引用相同的脚本是很常见的)。由于尝试解决此问题的复杂性,我们将执行特定于页面的脚本的任务留给开发人员,并假设每个浏览会话只执行一次头脚本。

您需要以某种方式将

脚本绑定到 pageinit 事件,或者您可以将其包含在data-role="page"但每次加载页面时都会执行。

我肯定会建议重构您的代码并根据pageinit事件进行重构。