2010-03-08 62 views
0

我是recently searching,用來調用我在Adobe AIR中顯示的PDF上的打印功能。我解決了這個問題有一點幫助從this fellow,並通過調用的postMessage我的PDF像這樣:在html對象標籤上調用時,JS函數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試圖以此爲好,只是要確定它是不是偷偷的土坯並幫助我...

var obj = document.getElementById("PDFObj"); 
obj.postMessage([message]); 

適用於JavaScript和ActionScript。

我擡頭看了一下關於postMessage的MDC had to say,但是我發現的全是window.postMessage。

現在,代碼就像一個魅力,postMessage神奇地將我的消息發送到我的PDF嵌入式JavaScript。不過,我仍然不確定我是如何做到這一點的。

我發現adobe talking about這種方法,但並沒有真正解釋它:

HTML-PDF通信基礎
的JavaScript在HTML頁面可以通過調用在PDF內容發送郵件給JavaScript表示PDF內容的DOM對象的postMessage()方法。

任何想法如何實現?

回答

3

「postMessage」實質上是JavaScript的發佈/訂閱模型的一半。

您可以發佈您喜歡的任何消息,但它依賴於偵聽該消息事件的內容。所以你的postMessage本質上是你把一個事件放在圍欄上,希望有一些東西在另一邊等着去處理事件。在柵欄的另一邊是(希望)一個事件監聽器是這樣的:

window.addEventListener("message", doSomethingWithTheMessage, false); 

function doSomethingWithTheMessage(event) { 
    alert("Do Something!"); 
} 

點擊此處瞭解詳情:https://developer.mozilla.org/en/DOM/window.postMessage

在你的具體的例子,當你嵌入一個對象,如PDF,Flash或就這些方面而言,他們可能正好以這種方式傾聽事件。

相關問題