2014-06-11 1 views
3

다트 프로그래밍 언어를 사용하여 웹보기가있는 Chrome 앱을 제작하고 있습니다. 앱이 postMessage를 통해 webview 콘텐츠와 통신하고 있습니다. DartEditor (Chrome 앱으로 실행)에서 앱을 실행하면 postMessage가 정상적으로 작동합니다. 그러나 빌드 (dart2js) 및 "로드되지 않은 확장을로드 ..."브라우저에서로드 - 응용 프로그램 webview contentWindow 가져올 수 없습니다 및 postMessage 실행할. 크롬 dev에 콘솔에서게시하는 방법 다트 Google 크롬 앱 (securityError)에서 웹보기에 메시지

오류 : catch되지 않은 오류 SecurityError는 : 원점 프레임을 액세스하는 "swappedout : //"기원 "// bpddihniogcgmnlaghkacfagkecgnljo 크롬 확장"과 프레임을 차단. 액세스를 요청하는 프레임은 "chrome-extension"프로토콜을 가지며 액세스되는 프레임은 "swappedout"프로토콜을가집니다. 프로토콜이 일치해야합니다.

Google 크롬 버전 36.0.1951.5 dev 다트 버전 SDK 1.4.2, 버전 1.5.0-dev.4.2 - 동일한 오류가 발생합니다.

이이 문제를 보여주기 위해 최소한의 작업 예입니다 - 그것은 알려졌다 https://github.com/Dumbris/dart_chrome_app_webview_security_error

+1

최근 몇 가지 유사한 오류가있었습니다. 나는 dartbug.com/new에서 버그 보고서를 제출해야한다고 생각합니다. –

+2

[Issue 19358] (https://code.google.com/p/dart/issues/detail?id=19358)을 추가했습니다. – Algis

+0

그 문제에 대한 링크가 포함 된 자신의 질문을 선별했습니다. 문제가 해결 될 때까지 받아 들인 것으로 표시하지 마십시오. – Xan

답변

3

를,이,

bug report here 내가 간단한 해결 방법을 chromeapp_webview_wrapper.js contextWindow 만약을 구축 참조 dart2js 컴파일러의 현재 버전의 버그입니다. JS 래퍼에서 호출 된 postMessage - 제대로 작동합니다. 사용 예 : 그럼에도 불구하고

js.JsObject _webview = new js.JsObject.fromBrowserObject(querySelector('webview')); 
js.JsObject _webview_wrapper = new js.JsObject(js.context['WebviewWrapper'], [_webview]); 
_webview_wrapper.callMethod('postMessage', ['initial message', '*']); 

, 나는 다트 개발자 팀에서 버그 수정을 기다리고. 왜냐하면 WebView 컨텐츠와의 통신은 Chrome 패키지 애플리케이션에서 중요한 기능이기 때문입니다.

관련 문제