如何将子框架中的location.href更改为相对路径?

时间:2015-05-23 13:03:03

标签: javascript jquery iframe cross-browser cross-domain

我用两个页面做了一些跨域JS的事情:http://app.domain.dev(主窗口)和http://framed.p.domain.dev(在框架中)。在两个页面document.domain='domain.dev'都在任何操作之前执行。

第二页(框架)有一个组合框,其JS功能与其“改变”相关联。在onChange='cbChanged(this)' HTML标记上使用select的事件。该函数如下所示:

function cbChanged(param){
    location.href = '/some/url?cbchanged'
}

当我手动更改组合框值时,该位置会成功更改为http://framed.p.domain.dev/some/url?cbchanged

但是当我尝试从父窗口的JavaScript发送更改事件时,位置会随父域的变化而变化:http://app.domain.dev/some/url?cbchanged。问题出现在Firefox和OS X Safari中,但在Chrome中一切正常。

我用来发送更改事件的父页面代码:

var frame = $('frame');
var combobox = frame.contents().find('.cb')[0];
var cw = frame.contentWindow;
cw.setTimeout(function(){
    cw.triggerEvent(combobox, 'change');
}, 0);

以下是子框架中的triggerEvent函数:

function triggerEvent(element, type) {
    jQuery(element).trigger(type);
}

因此,我需要从父窗口以编程方式触发更改事件。我希望location.href相对于子域更改,我希望它可以在所有现代浏览器中使用。

子框架的内容是第三方,我无法更改。

1 个答案:

答案 0 :(得分:0)

您可以使用:     var iframe = document.getElemntById(“someid”);     iframe.contentWindow.location.href = “someurl”;