pdf object.messagehandler onMessage在IE中不起作用

时间:2014-02-19 05:12:25

标签: javascript html internet-explorer pdf

在我的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,但没有浏览器警报。没有警告说有错误。

我做错了什么?

1 个答案:

答案 0 :(得分:3)

事实证明,在设置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种浏览器。酵母