我目前正在使用Jquery的.load()函数异步插入页面片段。在我从中加载页面片段的URL中,我还设置了一个Javascript全局变量值(在脚本标记中)。
var loaded_variable = 'value1'
有没有办法可以使用.load()函数插入页面片段并检索loaded_variable
的值,类似下面的代码:
function loadProducts(url) {
$('#mainplace').load(url + ' #submain', function() {
current_variable = loaded_variable;
});
}
我知道当一个选择器表达式被附加到URL时会使用脚本块,所以如果.load()函数不起作用,我可以使用其他可以实现此功能的Jquery函数。
额外信息:我加载的URL是用HTML和Python(Web2py)编写的;相同的Python变量用于呈现页面片段并设置loaded_variable
值。
答案 0 :(得分:1)
如果您想从页面获取片段并在其上执行脚本,则需要采用不同的方法。这有点hacky,但有效。
$.ajax({url: 'fetch_page.html', dataType: 'text'}).done(function(html) {
var dom = $('<html />').prop('innerHTML', html);
$('body').append(dom.find('body p'));
$('head').append(dom.find('script'));
});
从我们提取的页面中提取p
标记并将其插入父页面的body
。它还会在获取的页面中执行任何脚本。
如果你想知道prop('innerHTML...
位,那是因为如果我使用了jQuery的.html()
方法,它会清理输入字符串,所以我们得不到我们想要的结果。 / p>
我的第一个想法是文档片段,但是你不能将HTML字符串插入到doc frag中 - 你必须通过DOM方法追加。即便如此,在这种情况下,它也不会像我一样只使用一个元素来解析dom(dom
)。
正如我所说的那样,有点hacky,但是很有效。
答案 1 :(得分:0)
我想我也有类似的问题。我已经创建了一个页面来注册时事通讯。我想在我网站上每篇博文的底部加载这个页面。我不希望它出现在页脚中,因为它特定于我的博客页面,我希望能够对其进行编辑,而不必编辑每篇博文。
我使用 URL /blog-newsletter-form 创建了此页面,其中包含来自电子邮件 CRM 的一些代码。
然后,我在博客文章的末尾添加了一个带有“blog-newsletter-form”类的 div,并将以下内容放在页面标题中,以从我的博客文章中的第一页部分加载内容。
$( document ).ready(function() {
$('.blog-newsletter-form').load("/blog-newsletter-signup #page .page-section:nth-of-type(1) .content");
});
这很好用,除了..加载功能正在从新闻稿页面中剥离脚本,这是我的新闻稿表单工作所必需的。
如何加载页面片段同时保留新闻稿的脚本。我尝试使用上面的示例代码,但无法正常工作。