0

I am showing different domain website on iFrame window in my visualforce page. There is a button on that website "SAVE" (let's say). Once cx clicks on save button, I should notify too. How do I get this done? Java developer said he will be sending using parent.postMessage and I am using below sample to get it. but the problem is I am not using any kind of button from visualforce.

<apex:page standardController="Quote" Extensions="Quote_Iframe" sidebar="false">
<script>
     if (window.addEventListener) {
            window.addEventListener("message", handleMessage);
     } else {
            window.attachEvent("onmessage", handleMessage);
       }
       function handleMessage(event) {
            console.log("Received a message from " + event.origin + ".");

            var messageFromSender = event.data;
          <!--  document.getElementById("{!$Component.hdnField}").value = "messageFromSender"; -->
            console.log(messageFromSender);
        }
 </script>

 <apex:form >
 <apex:inputHidden id="hdnField" value="{!retValue}" />
 <center><apex:commandButton value="Back to Quotes" action="{!back}"/></center> 
   <!--<apex:detail relatedList="true" title="true" inlineEdit="true"/> <br/>-->
   <apex:iframe src="{!Url}" scrolling="true"/> 

 <center><apex:commandButton value="Back to Quotes" action="{!back}"/></center>


can anyone tell me how to get that value to Controller without using command button.. Thanks a ton.

  • Are you getting that value in JavaScript? – Tushar Sharma Sep 26 '18 at 6:03
  • @TusharSharma Yes. I am getting the value. I can see the message in console Log if I hide document.getElementById part. – AshSFcloud Sep 26 '18 at 7:46
0

Just create an apexFunction and pass the data in the controller

<apex:actionFunction name="paraFunction" action="{!controllerMethodName}" rerender="view">       
     <apex:param id="anode" name="node" value="" />
</apex:actionFunction> 

and call this function from your script

paraFunction(messageFromSender);

and in your controller, get value using parameter

String para = Apexpages.currentPage().getParameters().get('node');
  • It worked. Thank you very much. I should read more details about apex:param – AshSFcloud Sep 26 '18 at 10:15

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.