Как вызвать событие на странице визуальной силы с другой страницы - PullRequest
0 голосов
/ 09 мая 2018

У меня есть страница VisualForce со следующим кодом:

VFPage1:

<apex:page >
    <style>
        .hasMotif {
            margin : 0px;
        }
    </style>
    <apex:iframe src="https://mysamplewebpage">
    <script>
        function receiveMessage(event) {
        if(event.data.type === 'myevent') {

         **Perform specific actions**

        } 
    }
    window.addEventListener("message", receiveMessage, false);
</script>
</apex:page>

Я хочу, чтобы событие типа 'myevent' в VFPage1 вызывалось всякий раз, когда на странице происходит определенное действие "https://mysamplewebpage". Исходный код бэкэнда для страницы" https://mysamplewebpage" снова является VisualForce скрипт, как показано ниже:

VFPage2: https://mysamplewebpage

<apex:page controller="TwiMLPage"
  showheader="false"
  contentType="text/xml"
  >{! '<?xml version=\"1.0\" encoding=\"UTF-8\"?>' }
{!twiml}
</apex:page>

Проще говоря, VFPage2 - это страница, которая обрабатывает входящие вызовы twilio. Теперь, как я могу вызвать событие «myevent» в VFPage1 со страницы VFPage2 всякий раз, когда вызывается глагол «Dial» в VFPage2. Контроллер для VFPage2 показан ниже:

MyTwiMLController:

public class MyTwiMLController {

  public MyTwiMLController() {}

  public String getTwiml() {
    TwilioTwiML.Response res = new TwilioTwiML.Response();
    res.append(new TwilioTwiML.Say('Hello, Monkey!'));
    res.append(
      new TwilioTwiML.Play('http://demo.twilio.com/hellomonkey/monkey.mp3'));
    res.append(new TwilioTwiML.Hangup());
    return res.toXML();
  }
}

1 Ответ

0 голосов
/ 09 мая 2018

Вы можете использовать window.postMessage() для связи между контекстами выполнения (например, <iframe> и содержащим его окном). В вашем случае вам нужно добавить скрипт в VFPage2:

window.top.postMessage({ type: 'myevent' });

Тем не менее, обратите внимание, что этот вид связи подчиняется политике браузера того же происхождения; если VFPage1 и VFPage2 обслуживаются из разных доменов, вам необходимо передать дополнительные параметры. Вы можете прочитать больше здесь:

https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage

...