我有兩個html文件(Certificate1.html和Certificate2.html),它們都引用相同的JavaScript文件。 Certificate1.html調用一個JavaScript函數,它從HTML文件中獲取信息,打開一個新窗口,並分配信息到第二個窗口是這樣的:Chrome:通過window.open傳遞JavaScript變量
function passName() {
var FirstN = document.frmUserName.inFirstN.value;
var LastN = document.frmUserName.inLastN.value;
var CourseN = $('.sCourse').text();
var CourseHrs = $('.sNumHrs').text();
var CourseNum = $('.sNum').text();
var Cert = window.open("Certificate2.html");
Cert.FirstN = FirstN;
Cert.LastN = LastN;
Cert.CourseN = CourseN;
Cert.CourseHrs = CourseHrs;
Cert.CourseNum = CourseNum;
}
Certificate2.html然後調用另一個函數,該設置將信息在正確的位置:
function placeName() {
document.getElementById("sUserName").innerHTML = FirstN + " " + LastN;
document.getElementById("pCourseName").innerHTML = CourseN;
document.getElementById("sHrs").innerHTML = CourseHrs;
document.getElementById("sNum").innerHTML = CourseNum;
}
現在,這一切都在Firefox和IE9完美的作品,但不是在Chrome中。當我在Chrome中運行它時,我沒有發現任何明顯的錯誤,但是當我檢查F12時,有一個錯誤提示FirstN未定義。
Chrome是否處理JavaScript變量的方式與其他瀏覽器不同?這是怎麼回事?
感謝, 克里斯汀
這不是JavaScript變量不同,它是對'window'對象的處理 - 特別是通過'Cert'引用(這是「external」窗口對象)添加到窗口的屬性是否顯示在彈出窗口中的「窗口」對象上(這是「內部」窗口對象)。這也可能歸因於同源策略生效時的差異(例如,您在打開文檔之後立即訪問窗口*,當文檔尚未加載時; Chrome可能需要您等待'負載'事件首先,但這是猜測)。 – 2013-04-30 13:28:19