2012-06-28 80 views
1

看着這個問答& A,但它並不適用於我的問題解決了: PostMessage with multiple functions or custom callbackspostMessage - 多個postMessage事件/函數/回調?

我需要一個click事件中使用的postMessage負載,然後又和接收機兩個將是對同一頁面(父)。

有沒有範圍的postMessage的方法?或發送多個postMessages?我可以解析消息來觸發特定的功能,但是如何擁有多個帖子?

感謝

+1

您可以將標識符添加到您的消息。我在一個爲跨域'localStorage'使用'postMessage'的方法中實現了這樣的功能。參見[這個答案](http://stackoverflow.com/a/10505907/938089?is-there-any-workaround-to-make-use-of-html5-localstorage-on-both-http-and-https) (包括完整代碼,請檢查它;)) –

+0

要發送多個'postMessage',您只需多次調用'postMessage'。什麼不適合你?請發佈您的代碼。 – robertc

+0

@robertc - 我現在修好了,但由於某種原因,最初,第二個postMessage沒有發送。現在都在工作。 – Jason

回答

1

我的postMessage:

$.postMessage(
     'layerTitle|'+ layerTitle +'', 
     '*', 
     parent 
    ); 
... 
var getDocHeight = $(document).height(); 
    $.postMessage(
     'iframeHeight|'+ getDocHeight +'', 
     '*', 
     parent 
    ); 

和我得到:

$.receiveMessage(
    function(e){ 
    var message = e.data.split('|'); 
    if(message[0] == "layerTitle"){ 
    $('#ui-dialog-title-loginDialog').empty().append(message[1]); 
    } 
    if(message[0] == "iframeHeight"){ 
     $('#loginLayer').attr('height', message[1]); 
    } 

    } 
); 
+0

請勿使用'e.data.split',RegEx或子字符串。否則,當消息包含管道字符時,您將丟失數據。 –

+1

@RobW - 但我控制着消息的內容 - 我們經常使用管道來處理這種情況,因爲它們不是我們工作中的常用字符 - 除了字符串中的分隔符。 – Jason