pdf object.messagehandler onMessage不在IE中工作 [英] pdf object.messagehandler onMessage not working in IE

查看:89
本文介绍了pdf object.messagehandler onMessage不在IE中工作的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在我的pdf中,在我的onOpenAction中,我有这个js代码:

  app.alert(this.hostContainer); 
尝试{
this.hostContainer.postMessage(['Hello World']);
} catch(e){app.alert(e.message);}

in我的HTML,我有这样的代码:
$ b $ pre $ 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'){//就绪状态仅适用于IE,这很好,因为我们只需要为IE执行此操作,因为IE在第一个地方吸吮
pdfObject.messageHandler = {onMessage:messageFunc};
return;
}
if(pdfObject.readyState == 4){
pdfObject.messageHandler = {onMessage:messageFunc};
} else {
setTimeout(loadListener,500);
}
}

这适用于所有3种浏览器。是的。

In my pdf, in my onOpenAction, I have this js code:

app.alert(this.hostContainer); 
try { 
   this.hostContainer.postMessage(['Hello World']); 
} catch(e) {app.alert(e.message);} 

in my html, I have this code:

function messageFunc(messageArray) {    
    alert("In message Func:"+messageArray);
}

document.getElementById("pdfObject").messageHandler = { onMessage: messageFunc };

In Chrome and FF this works fine, one pdf alert showing a valid hostContainer, and a web browser alert showing the message, Hello World

In IE (11) I get the pdf alert, showing a valid hostContainer, but no browser alert. No alert saying there was an error.

What am I doing wrong?

解决方案

Turns out, that the PDF needs to be loaded in IE before you can set a messageHandler, So I have done this:

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);
}
}

This is working across all 3 browsers. Yea.

这篇关于pdf object.messagehandler onMessage不在IE中工作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆