gpt4 book ai didi

JQuery .get 不执行 Javascript

转载 作者:行者123 更新时间:2023-12-01 02:03:50 25 4
gpt4 key购买 nike

我正在使用 JQuery .get 方法从网页(第 1 页)检索一些内容并将其显示在主页的 div 中。问题是检索到的内容包含一些 javascript 调用。正在显示内容,但 Javascript 方法未执行。 .js 文件被所有页面引用,因此 main 中 js 的可用性不成问题。

这是主页中的代码。第 1 页的 URL 被赋予 .get 函数:

$.get(url, function(response) {          
var newContent = $(response).find("#right"); //Find the content section of the response
var contentWrapper = $("#wrap"); //Find the content-wrapper where we are supposed to change the content.
var oldContent = contentWrapper.find("#right"); //Find the old content which we should replace.

oldContent.replaceWith(newContent);
});

这是第 1 页#right (div) 中的代码

Some html tags...    
<p><script type="text/javascript">abc7();</script></p>
<p><script>s(30)</script></p>
Some html tags...

函数 abc7 和 s 可在所有页面部分引用的 .js(普通 JavaScript 文件)中使用

s(30) 应显示大小为 30 的文本字段。

最佳答案

除非您对其运行eval(),否则内联 JavaScript 不会执行。您可以在这里阅读更多相关信息:

eval() 解决方案可能看起来像这样,但我认为这是不好的做法:

$.get(url, function(response) {          
var newContent = $(response).find("#right"); //Find the content section of the response
var contentWrapper = $("#wrap"); //Find the content-wrapper where we are supposed to change the content.
var oldContent = contentWrapper.find("#right"); //Find the old content which we should replace.

oldContent.replaceWith(newContent);


//Find all inline script tags in the new content and loop through them
newContent.find("script").each(function() {
var scriptContent = $(this).html(); //Grab the content of this tag
eval(scriptContent); //Execute the content
});
});

更好的解决方案是在 #right 标记上设置标识符/名称,并执行该特定内容所需的代码。

类似于:

<div id="right" data-page-name="index">
<!-- Content -->
</div>

<div id="right" data-page-name="about-us">
<!-- Content -->
</div>

一个简单的解决方案,只需将页面名称传递给一个函数,该函数将根据页面执行代码,如下所示:

$.get(url, function(response) {          
var newContent = $(response).find("#right"); //Find the content section of the response
var contentWrapper = $("#wrap"); //Find the content-wrapper where we are supposed to change the content.
var oldContent = contentWrapper.find("#right"); //Find the old content which we should replace.

oldContent.replaceWith(newContent);

var pageName = newContent.attr("data-page-name");

pageSpecificActions(pageName);
});

function pageSpecificActions(pageName) {
if (pageName == "index") {
//Run the code for index page
} else if (pageName == "about-us") {
//Run the code for about us page.
}
};

这可以防止 JavaScript 代码内联,并且不使用 eval()。更好的是在页面内容更改时使用事件,但现在这就足够了。

关于JQuery .get 不执行 Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8260355/

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