通过JavaScript和对象数据加载页面 - 如何清除加载它的变量?

时间:2014-07-15 11:15:06

标签: javascript jquery ajax

我在用户点击链接时加载页面。我想要在容器内加载。一切正常。

我想要做的是覆盖一些javascript变量(以防止在加载的对象中发生事情)。

我尝试过简单地使用相同的名称重新实例化变量,但无济于事。任何帮助赞赏!这甚至可能吗?当我重新实例化变量时,对象内部实际上没有发生任何事情。

 function loadURL(x){

    var url = $(x).attr('value'); // eg. http://example.com

    $('.page-loading-space').html('<object data="'+url+'"/>', function(){
        same_variable_name = null; // that gets loaded with the object
    });

  }

信息

当我在例如加载页面时,正在调用我在不同域上运行的脚本。本地主机。

以下是一个例子:

我正在使用localhost进行开发,并且如上所述将http://stackoverflow.com加载到object标记中 - 通过$('.page-loading-space').html('<object data="'+url+'"/>'); - 没有回调以简化。

我想清除在此加载对象中实例化的变量。因此,如果stackoverflow.com加载例如:GoogleAnalyticsObject - 它就是这样做的。我想简单地使该对象无效以阻止它执行任何卸载回调。

这就是代表我实现的脚本的全部内容 - 我知道糟糕的跨域加载等。

我想要做的就是在页面加载到我的对象后清除值,以便在卸载时停止回调。谢谢,对不起,如果我不清楚/或者仍然不清楚。

2 个答案:

答案 0 :(得分:0)

这可以解决您的问题:

window.f = '5';
$(document).ready(function(){
    var object = $('<object data="http://jsfiddle.net/"/>');
    $(object).appendTo(document.body).ready(function(){
        var doc = object.get(0).contentDocument;
        var win = doc.parentWindow || doc.defaultView;
        console.log(win, win.f);
    });
});

http://jsfiddle.net/eithe/tYu4F/

基本上,正在发生的事情是,当您创建<object>元素时,您需要为该{window创建另一个document<object>个对象{1}}。因此,<object>内的所有变量都将绑定到window(考虑<object>,如<iframe>)。要删除变量,您可以使用delete运算符。

答案 1 :(得分:0)

即使在iframe / object中也无法访问跨域JavaScript变量。