我是recently searching一种在我在 adobe air 中显示的 PDF 上调用打印功能的方法。我在 this fellow 的帮助下解决了这个问题,并通过在我的 PDF 上调用 postMessage ,如下所示:
//this is the HTML I use to view my PDF
<object id="PDFObj" data="test.pdf" type="application/pdf"/>
...
//this actionscript lives in my air app
var pdfObj:Object = htmlLoader.window.document.getElementById("PDFObj");
pdfObj.postMessage([message]);
我也在 JavaScript 中尝试过这个,只是为了确定它不是 adobe 潜入并帮助我......
var obj = document.getElementById("PDFObj");
obj.postMessage([message]);
在 JavaScript 和 ActionScript 中运行良好。
我查了一下MDC had to say关于postMessage,但我发现的只是window.postMessage。
现在,代码就像一个魅力,postMessage 神奇地将我的消息发送到 PDF 的嵌入式 JavaScript。但是,我仍然不确定我是如何做到这一点的。
我找到了adobe talking about这个方法,但没有真正解释它:
block 引用>HTML-PDF communication basics
JavaScript in an HTML page can send a message to JavaScript in PDF content by calling the postMessage() method of the DOM object representing the PDF content.有什么想法是如何实现的吗?
最佳答案
“postMessage”本质上是 JavaScript 发布/订阅模型的一半。
您可以发布任何您喜欢的消息,但它依赖于监听该消息事件的东西。因此,您的 postMessage 本质上是您将一个事件扔过栅栏,希望另一边有东西正在等待对该事件执行某些操作。在栅栏的另一边(希望)是一个像这样的事件监听器:
window.addEventListener("message", doSomethingWithTheMessage, false);
function doSomethingWithTheMessage(event) {
alert("Do Something!");
}
更多信息请点击:https://developer.mozilla.org/en/DOM/window.postMessage
在您的具体示例中,当您嵌入 PDF、Flash 等对象时,它们很可能会以这种方式监听事件。
关于javascript - 当在 html 对象标签上调用 JS 函数 'postMessage()' 时,它会做什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2402269/