是否有标准的方法来定义在文档中打开的href.打开电话



我正在处理的困境是,在jquery-bbq代码,因为IE6和IE7不支持hashchange,他们加载页面两次,以便有一个历史状态。

这会产生负面影响,因为代码在服务器端和客户端同时运行两次。用于创建iframe的方法如下:

  if ( is_old_ie ) {
    // Create hidden IFRAME at the end of the body.
    iframe = $('<iframe src="javascript:0"/>').hide().appendTo( 'body' )[0].contentWindow;
    // Get history by looking at the hidden IFRAME's location.hash.
    get_history = function() {
      return get_fragment( iframe.document.location.href );
    };
    // Set a new history item by opening and then closing the IFRAME
    // document, *then* setting its location.hash.
    set_history = function( hash, history_hash ) {
      if ( hash !== history_hash ) {
        var doc = iframe.document;
        doc.open().close();
        doc.location.hash = '#' + hash;
      }
    };
    // Set initial history.
    set_history( get_fragment() );
  }

创建一个空白iframe, src为javascript:0document.open方法被调用,并且它似乎捕获父窗口的location.href作为使用.open打开的页面的默认值。

我基本上必须修改代码,使它不会打开相同的url两次,所以我正在寻找覆盖默认值并指定一个参数,如?iframe=true。

的例子:http://example.com/views/step-2?one=two

在IE中,上面的页面被加载,然后在iframe中再次加载。服务器端代码执行两次,但我不希望发生这种情况。

我想将&iframe=1附加到URI中,这样如果指定了iframe参数,我就可以防止服务器端代码运行。

最明显的两件事是:

  1. 设置iframe的src,但这可能会产生负面影响,我很确定它的存在是有原因的。
  2. 不使用document.open.close,使用iframe.location.href并手动设置为href。

如果有人有iframe黑客的经验,我将非常感谢一些提示。

EDIT:我想到的另一个解决方案是通过iframe/ajax加载一个页面,该页面在iframe做document.open之前设置一个会话变量,它创建一个会话变量' iframloading ',等于1,并在iframeload上设置一个加载事件处理程序,将其设置为0,并调整我的服务器端代码,如果会话变量设置为1,则不执行。比如:

$('<iframe src="/iframe-loading.php"/>').hide().appendTo('body');
document.open().close()
 $( document.defaultView ).load(function() {
    $('<iframe src="iframe-doneloading.php/>').hide().appendTo('body');
});

About "有没有标准的方法来定义在文档中打开的href ?打开电话吗?"

相关内容

  • 没有找到相关文章

最新更新