Javascript 执行<;脚本>;在特定上下文中通过.ajax加载

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"

我有一个带有几个容器的页面a,我将页面B的内容加载到每个容器中。页面B由
标记中的一些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

(功能(){ 警报('我已被嵌入容器#?'); })();
我认为实现这一目标有两种基本方法:

  • 将信息从A页传递到B页
  • 让B页中的脚本自己找出它的位置
  • 对于1:有没有一种方法可以在特定的绑定中执行通过AJAX加载的嵌入式JS/更改B页中的
    这个
    的范围

    对于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')使用-因此在这种情况下,此解决方案也会失败(请参阅我的帖子:)