Javascript 执行<;脚本>;在特定上下文中通过.ajax加载
我有一个带有几个容器的页面a,我将页面B的内容加载到每个容器中。页面B由Javascript 执行<;脚本>;在特定上下文中通过.ajax加载,javascript,ajax,jquery,Javascript,Ajax,Jquery,我有一个带有几个容器的页面a,我将页面B的内容加载到每个容器中。页面B由标记中的一些HTML和Javascript组成 我现在需要配置嵌入在页面B中的JS——让它知道它已加载到的DOM节点 不幸的是,使用URL参数等进行服务器端处理不是一个选项 一个简化的示例-第A页: <div id="container1"></div> <div id="container2"></div> <script type="text/javascript"
标记中的一些HTML和Javascript组成
我现在需要配置嵌入在页面B中的JS——让它知道它已加载到的DOM节点
不幸的是,使用URL参数等进行服务器端处理不是一个选项
一个简化的示例-第A页:
<div id="container1"></div>
<div id="container2"></div>
<script type="text/javascript">
$('#container1').load('pageB.html');
$('#container2').load('pageB.html');
</script>
$('#container1').load('pageB.html');
$('#container2').load('pageB.html');
B页:
<p>Lorem ipsum</p>
<script type="text/javascript">
(function(){
alert('I have been embedded into container #???');
})();
</script>
Lorem ipsum
(功能(){
警报('我已被嵌入容器#?');
})();
我认为实现这一目标有两种基本方法:
这个的范围
对于2.:是否有跨浏览器的方式获取对当前执行的
节点的引用?类似壁虎的东西document.currentScript
?试试:
<p>Lorem ipsum</p>
<script type="text/javascript">
(function($){
var $container = $('script:last').parent();
alert('I have been embedded into container #'+$container.attr('id'));
})(jQuery);
</script>
Lorem ipsum
(函数($){
var$container=$('script:last').parent();
警报('I已嵌入容器#'+$container.attr('id'));
})(jQuery);
您能为嵌入在B页的
标签添加ID吗?很遗憾,不能。无法在服务器端设置唯一ID。谢谢!不幸的是,所讨论的脚本标记并不总是DOM树中的最后一个。我需要插入最后一个元素,而不是位置上的最后一个元素。此外,使用$.ajax()加载的页面将在其中运行脚本,但会丢弃它们,这样它们就无法通过$('script')使用-因此在这种情况下,此解决方案也会失败(请参阅我的帖子:)