gpt4 book ai didi

jquery - 通过ajax加载外部页面(包含ajax)

转载 作者:行者123 更新时间:2023-12-01 01:29:17 36 4
gpt4 key购买 nike

我有一个工作网页,仅在 div 内显示外部 html 文件(使用 ajaxtabs.. 基于单击的菜单项)。整个设置工作正常,但外部 html 文件之一使用 colorbox(jquery 插件)在模式窗口上显示嵌入的 google 表单(单击链接时)

这个外部 html 文件本身工作正常,但是当它加载到主页上并单击链接时,谷歌表单会替换整个页面。知道我在这里可能做错了什么吗?

PS:我不是网络开发人员,所以请忽略我可能违反的任何最佳实践:)

更新:

根据大卫的建议,我认为谷歌有一些代码导致框架被破坏。我将 b.html 中的所有代码复制到 a.html 中的 div 中。所以现在只有一个文件a.html。默认情况下加载 div 中的此选项卡内容时,谷歌表单渲染得很好,但是当我单击不同的选项卡,然后单击返回默认选项卡,然后单击谷歌表单时,它再次脱离框架: (.查看谷歌表单的源代码,我没有看到任何 javascript 来破坏框架......有什么想法吗?

最佳答案

您是否使用 DynamicDrive 的 ajaxTabs 库? http://www.dynamicdrive.com/dynamicindex17/ajaxtabscontent/

如果是这样,您正在加载的页面中的脚本可能未运行,并且您单击的链接将恢复为其 href,而不是像应有的那样使用 onclick 事件。

根据 DynamicDrive 的源代码,以下是调用以将内容加载到选项卡中的函数:

ddajaxtabs.loadpage=function(page_request, pageurl, tabinstance){
var divId=tabinstance.contentdivid
document.getElementById(divId).innerHTML=ddajaxtabssettings.loadstatustext //Display "fetching page message"
if (page_request.readyState == 4 && (page_request.status==200 || window.location.href.indexOf("http")==-1)){
document.getElementById(divId).innerHTML=page_request.responseText
ddajaxtabs.ajaxpageloadaction(pageurl, tabinstance)
}
}

如您所见,这只是设置目标元素的innerHtml 属性。 innerHtml 的一个已知副作用是,以这种方式更新属性时,它不会自动执行脚本标记。 JQuery 内置了额外的逻辑,基本上会逐步执行新的 HMTL 并调用它找到的任何脚本标签。我不建议尝试重新发明该功能。

你可以做的事情...

1) 快速但肮脏的解决方案:更改此行:

document.getElementById(divId).innerHTML=page_request.responseText

至:

$("#" + divId).html(page_request.responseText);

无需更改现有代码即可获得 jQuery 的强大功能。 DD的代码也可能在其他地方被破坏......

2) 使用更好的选项卡库(即 jQueryUI 中内置的选项卡库: http://jqueryui.com/demos/tabs/ )。将来更易于维护。

顺便说一句,我倾向于认为 DynamicDrive 上的大多数内容现在都已经过时,并且大多数时候都偏离了他们的解决方案。

关于jquery - 通过ajax加载外部页面(包含ajax),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4583109/

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