3

콘텐츠 스크립트를 사이트에 추가하는 크롬 확장 프로그램을 구축하고 있습니다. 콘텐츠 스크립트는 내 도메인 (교차 도메인)으로 연결되는 호스트에 iframe을 만듭니다.크롬 콘텐츠 스크립트 : window.postMessage() "message"이벤트에 "source"속성이 없습니다.

parent.postMessage()를 통해 iframe에서 호스트로 메시지를 보낼 수 있습니다. 그러나 수신 된 'message'이벤트에는 메시지를 자식에게 다시 전달하지 못하게하는 'source'속성이 없습니다.

업데이트 이 문제는 클라이언트 측 솔루션이나 설명을 찾고 있습니다.

+0

에 대한 답변의 예를 볼 수 있습니다. 소스 iframe이 내용 스크립트를 통해 주입 되었기 때문에 왜'source'가 생략 될지 모르겠습니다. 빠른 테스트를했는데 주입 된 iframe이'http : //'페이지가 아닌'chrome-extension : //'페이지 일 때 제대로 작동합니다. (아직'http : //'페이지로 테스트하지 않았습니다.) – apsillers

+0

고마워요. 확실히하기 위해, 우리는 '소스'속성에 대해 이야기하고 있습니다. 맞습니까? '원산지'가 있고 유효합니다. –

+0

그래,'source'와'origin' 둘 다 존재했고,'source.postMessage'를 사용하여 iframe에 답장했습니다. – apsillers

답변

0

샌드 박스에 넣은 window 개체에 문제가있는 것 같습니다.

빠른 해결 방법은 확장 코드에서 실행하는 대신 src 요소를 통해 DOM에 자바 스크립트 코드를 직접 삽입하는 것입니다. 이렇게하면 일반 창 개체를 처리 할 수 ​​있습니다.

당신이 확실히 버그 같은 소리 this question

2

어려운 방식으로 처리해야합니다.

iframe을 수행 할 때 url에 고유 한 설치 ID를 보내십시오.

http://www.trackingdomain.tld/trackingscript.php?uid=38736238

그런 다음 스크립트가 JSON 스크립트가 반환되는 메시지가 동일한 UID와 도메인에서 모든 1000MS 답장을 끌어 있습니다.

json을 사용하여 메시지를 보낼 수도 있습니다.

그러나이 솔루션은 서버 측 스크립팅을 사용해야한다는 것을 의미합니다.

+0

Michael,이 메시지는 실시간 UI 반응을 만들어 서버 측 솔루션이 최후의 수단이되도록해야합니다. 이것은 알려진 행동입니까? –

+1

메시지 메시지 동작은 최상의 상태입니다. 주된 문제는 모든 브라우저 제조업체가 작동해야 할 때와 그렇지 않아야 할 때 각각 다른 아이디어를 가지고 있으며, 모든 버전의 소프트웨어에서 동작이 다릅니다. 실시간 행동 분석이 필요한 경우 스크립트의 자바 스크립트 파일을 모든 웹 페이지에로드하십시오. 안전한 측에 있으려면 보안 충돌 경고를 피하기 위해 https 보안 서버에서 호스팅하십시오. 또는 단순히로드하는 모든 문서에 자바 스크립트를 삽입하십시오. 그렇게하면 행동이 실시간인지 확인할 수 있습니다. 그리고 최종 상태 메시지/통계는 ajax를 통해 귀하의 사이트로 전송 될 수 있습니다. – Tschallacka

관련 문제