0
傳送附加數據由客戶所請求的工作流程是這樣的:window.opener.dispatchEvent不會在Firefox
登記表上的用戶點擊一個按鈕,打開另一個窗口:
$ ->
$("a.popup").on 'click', (e) ->
e.preventDefault()
newWindowCenter($(this).attr("href"), $(this).attr("data_width"), $(this).attr("data_height"), "authPopup")
其中
newWindowCenter = (url, width, height, name) ->
left = (screen.width/2) - (parseInt(width)/2);
top = (screen.height/2) - (parseInt(height)/2);
window.addEventListener("dataAvailable", transferAccountData, false)
window.open(url, name,
"menubar=no,toolbar=no,status=no,width="+width+",height="+height+",alwaysRaise=yes,toolbar=no,left="+left+",top="+top)
在這個新的窗口,他得到了一些數據,使用其中他證實通過點擊一個按鈕,這樣:
$(".confirm_data_usage").on 'click', (e) ->
e.preventDefault()
if (window.opener)
accountData= {...}
data = {...} #collected in opened window
approveDataTransfer = document.createEvent("Events")
approveDataTransfer.dataTransfer = data
approveDataTransfer.initEvent("dataAvailable", true, false)
approveDataTransfer.eventType = "data available"
window.opener.dispatchEvent(approveDataTransfer)
window.close()
所以點擊「confirm_data_usage」按鈕插入該數據的功能在揭幕戰窗口發射
transferAccountData = (event) ->
data = event.dataTransfer
...
事情經過是:它在Chrome和Opera的工作,但在Firefox event.dataTransfer是不確定的。任何人都看到一個明顯的錯誤/知道Firefox中的某些特定事件阻止事件傳輸數據?也許有另一種方式?問題可能與approveDataTransfer事件上的isTrusted屬性有關?
我通常在'window'定義一個函數,然後直接調用它('window.opener.that_function(...)')。該功能在完成其工作後也可以從'window'中移除。 –
好吧,將函數更改爲@transferAccountData =(data) - >並直接調用window.opener.transferAccountData(data)。咖啡的問題是我總是忘記@。 我想,你可以給你答案作爲答案,所以我可以,我不知道,接受它。 – Nox