簡體   English   中英

動態Iframe IE名稱問題

[英]Dynamic Iframe IE Name Issue

這似乎是一個常見問題,而且我所看到的解決方案似乎對我沒有用。

我們有一個動態生成並插入的iframe,並帶有一個提交給它的表單。 在FF和IE8中工作正常,但是在7中,我們遇到了iframe名稱問題(IE不想使用element.name或element.setAttribute(“ name”,)來設置iframe名稱)。

因此,我已將代碼轉換為以下代碼:

function insertTrafRepiFrame(){
    var contDiv = document.getElementById('trafficReportDiv');
    if(contDiv != null){
        var iFrame;
        try{
            iFrame = document.createElement('IFRAME');
        }catch(ex){
            iFrame = document.createElement('<iframe name="trafficreport">');                                        
        }
        iFrame.name = "trafficreport";
        iFrame.id = "trafficreport";
        iFrame.style.border = 0;
        iFrame.src = "http://www.frixo.com/widget/widget-report-area.aspx?road=all%38map=small%38latitude=51.1421%38longitude=-0.07545%38radius=50%38roadsearch=no%38roadlink=yes%38reporttype=full";
        while(contDiv.hasChildNodes()){
            contDiv.removeChild(contDiv.firstChild);
        }
        contDiv.appendChild(iFrame);
    }
}

使用這種形式:

<form name="traffic_report" id="traffic_report" target="trafficreport" action="http://www.frixo.com/widget/widget-report.aspx" onsubmit="javascript:return CheckResponse(this);" method="get">
    <div id="trafficRepFormInps">
        <input type="hidden" name="map" value="small" />
        <input type="hidden" name="roadsearch" value="no" />
        <input type="hidden" name="roadlink" value="yes" />
        <input type="hidden" name="reporttype" value="full" /><br />
        <label for="road">Type a road below, i.e. M23:</label><br />                           
        <input name="road" value="M23" id="road" class="citysearchbox" type="text" /> 
    </div>
</form>

我注意到的是,在開發人員工具中,IE的7模式顯示iframe的SubmitName屬性,而8模式的IE顯示propdescName的屬性。 這種差異會導致這種形式的錯火嗎? 還是我錯過了其他東西?

謝謝,Psy

(PS。請在iframe變量名稱上不要抱怨iFrame:p)

我認為您可以使用document.createElement('<iframe name="trafficreport">');

但是我不確定它是否被稱為document.createElement('IFRAME')是否可以,即使在IE中也可以。

我們正在使用動態iframe將跨域JSONP調用沙盒化,並且在IE中可以正常工作。 我使用的代碼是:

var ifr = (/MSIE (6|7|8)/).test(navigator.userAgent) ? 
    document.createElement('<iframe name="'+id+'">'):
    document.createElement('iframe');
    ifr.name = id;

您可以在此處單擊“演示”鏈接來查看工作示例 如果該演示有效,則表明您的代碼有問題,如果不起作用,則說明您的IE配置有問題。

唯一適用於我的解決方案是通過將元素注入DOM后更改名稱:

window.frames [名稱]。名稱=名;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM