通过javascript设置iframe的window.external成员

时间:2015-11-05 02:18:38

标签: javascript html iframe

我有一些代码在html页面中运行,该页面调用window.external上存在的函数。代码有效:

SomeCode.js(位于somePage.html):

window.external['someFunction']();

但是,出于测试目的,我需要将iftml中的html页面嵌入到单独的测试页面中。测试页代码

TestPage.html:

window.frames[0].external['someFunction'] = function() { console.log('success'!); }; // Doesn't work
window.frames[0].src = "http://somePage.com/somePage.html";
window.frames[0].external['someFunction'] = function() { console.log('success'!); }; // window.external['someFunction'] is still null from the perspective of the code in SomeCode.js. oesn't work

我在设置src之前和之后尝试了多种设置功能的方法。奇怪的是,如果我将window.frames [0] .external打印到控制台,window.frames [0]。外部DOES似乎有一些功能'组。它几乎像window.frames [0] .external是一个与iframe中javascript内部使用的对象不同的对象。

非常感谢任何想法。

谢谢, 蝉

1 个答案:

答案 0 :(得分:0)

如果函数for (var i = data.length - 1; i >= 0; i--){ var Lat = data[i].Item.Coordinate.Lat; var Lon = data[i].Item.Coordinate.Lon; var LatLon = new gm.LatLng(jobLat, +jobLon); var marker = new gm.Marker({ position: LatLon, map: map, visible: true }); var infobox = new InfoBox ({ position: marker.position or LatLon }); marker.newContent = document.getElementById("infobox_"+data[i].Item.Id); gm.event.addListener(marker, 'click', (function (marker) { return function (pin, suppressInfoWindow) { if (!suppressInfoWindow) { infobox.setContent(marker.newContent); infobox.open(map, marker); } } } resultMarkers.push(marker); 有一些参数,则必须在先行行中声明它。如果你不这样做,它就不起作用。

应该是:

var infoboxWidth = -650/2;
        if(getWidth === 'xs'){
            infoboxWidth = -320/2;
        }

        var infobox = new InfoBox({
            pixelOffset: new gm.Size(infoboxWidth, -65),
            alignBottom: true
        });