加载iframe.src将运行JSP中的所有JavaScript

Loading iframe.src runs all JavaScript in the JSP

本文关键字:JavaScript JSP iframe src 运行 加载      更新时间:2023-09-26

我的应用程序在包装页的iframe中运行。当包装页加载时,iframe的源设置如下:

  <script type="text/javascript">
  var frameSrc = 'myApp.jsp';
  $(document).ready(function() {
    loadFrame(frameSrc);
    $("#iFrm").height($(window).height() - 175);
    $(window).bind('resize', function(){
        $("#iFrm").height($(window).height() - 175);
        return false;
    });
    $("#adminLink").click(function(){
        frameSrc = 'myAdmin.jsp';
        loadFrame(frameSrc);
    });
    return false;
  });
  
  function loadFrame(src){
      $("#iFrm").attr('src', src);
  }
  </script>

这加载和运行得很好,但我在页面上有一个管理链接,用于将不同的页面加载到iframe中,并且它在document.ready函数中有一个事件处理程序。

我遇到的问题是,myAdmin.jsp正在加载,然后包装页中的原始document.ready脚本再次运行,完全使用原始frameSrc值。似乎通过更改iframe源,它触发了整个包装页和原始iframe来源的重新加载。有人看到这个吗?我是不是错过了一些显而易见的东西?

我在研究各种可能的解决方案时得到了这个问题的答案。问题原来与adminLink有关。href值为空,这似乎指示浏览器重新加载当前页面(包装)。当我放入javascript时:return false中的href我的问题已解决。

<a id="adminLink" href="">Administration</a>

<a id="adminLink" href="javascript:return false;">Administration</a>