在我的pdf中,在我的onOpenAction中,我有以下js代码:
app.alert(this.hostContainer);
try {
this.hostContainer.postMessage(['Hello World']);
} catch(e) {app.alert(e.message);}
在我的html中,我有以下代码:
function messageFunc(messageArray) {
alert("In message Func:"+messageArray);
}
document.getElementById("pdfObject").messageHandler = { onMessage: messageFunc };
在Chrome和FF中,此方法工作正常,一个pdf警报显示一个有效的hostContainer,一个Web浏览器警报显示消息,Hello World
在IE(11)中,我得到pdf警报,显示有效的hostContainer,但没有浏览器警报。没有警报说有错误。
我究竟做错了什么?
最佳答案
事实证明,在可以设置messageHandler之前,需要先在IE中加载PDF,所以我做到了:
function loadListener() {
var pdfObject = document.getElementById("pdfObject");
if(typeof pdfObject.readyState === 'undefined') { // ready state only works for IE, which is good because we only need to do this for IE because IE sucks in the first place
pdfObject.messageHandler = { onMessage: messageFunc };
return;
}
if(pdfObject.readyState==4) {
pdfObject.messageHandler = { onMessage: messageFunc };
} else {
setTimeout(loadListener,500);
}
}
这适用于所有3种浏览器。是的