2012-09-25 1 views
3

마침내 패키지 된 응용 프로그램에서 dojo를 사용하여 몇 가지 진전을 한 후에 다른 도로 블록을 찾아 문서를 찾을 수 없습니다.패키지 된 응용 프로그램에서 dojo 1.8 사용 (패키지되지 않은 언로드는 패키지 된 응용 프로그램에서 사용할 수 없음)

{ 
    ... 
    "sandbox": { 
    "pages": ["test.html"] 
    }, 
    "app": { 
    "background": { 
     "scripts": [ 
     "background.js" 
     ] 
    } 
    } 
} 

test.html를로드 내 일부 모듈뿐만 아니라 응용 프로그램에서 도장하지만 도장은 페이지의 DOM을 구문 분석으로, 나는있는 platformApp

Uncaught unload is not available in packaged apps. platformApp:14 
(anonymous function)        platformApp:14 
Window.addEventListener       platformApp:127 
addListener          dojo.js.uncompressed.js:15317 
on.parse 

에 의해 슬로우 오류가 거기에 도착 CSP 규칙은 샌드 박스에 추가하여 정상적인 작업을하도록 할 수 있습니까?

+0

당신이 작고 독립적 인 생식을 공유 할 수 있습니까? 해결 방법이 있는지 테스트하고보고 싶습니다. 감사! – mangini

+0

나는 함께 무언가를 넣고 곧 여기에 게시하려고 노력할 것이다. 내가 stackoverflow에 게시하는 새로운, 질문에 파일 예제를 첨부 할 수있는 방법은 무엇입니까? – ddumont

+0

여기에 자체 포함 된 예가 나와 있습니다. https://docs.google.com/open?id=0B1YDS5-fQZJESGlNUFBMRHF3UTg – ddumont

답변

4

나는 크롬은 기본적 대신 오류를 던져 이런 짓을 바란다 ...하지만 내가 도장로드하기 전에해야 할 일을했을 것입니다 :

// Prevent registrations for unload/beforeunload and warn, chrome will throw exception. 
(function() { 
    var windowAddEventListener = Window.prototype.addEventListener; 
    Window.prototype.addEventListener = function(type) { 
    if (type === 'unload' || type === 'beforeunload') { 
      try { 
     throw new Error('Do not use Window.addEventListener for ' + type); 
     } catch (e) { 
     console.error(e.message, e); 
     } 
    } else 
     return windowAddEventListener.apply(window, arguments); 
    }; 
})(); 
+0

프로덕션 수준 앱을위한 가능한 솔루션입니까? 플랫폼의 의도는 언로드 이벤트를 허용하지 않는 것인데 이것이이를 우회하는 것입니다. jquery와 signalr을 사용하여 같은 문제가 발생했습니다. 이 작업은 저에게는 효과적이지만이 작업에 의존하고 나중에 Chrome 팀이 나사를 조이고 코드를 위반하게 만듭니다. – Kywillis

+0

나는 왜 안 보이지. 여전히 API를 기능적으로 사용할 수는 없으며 애플리케이션이 파손되지 않고 조용하게 (다소) 실패합니다. 이 API를 devs에게 쓸모 없게 만드는 Google의 목표는 유지되며 이에 의존하지 않아야합니다. (하지만 이제는 물에서 죽지 않고 앱을 고칠 시간이 있습니다.) – ddumont

+0

오류? Ember.js를 사용하고 있으며 문제가 기능적으로 영향을 미치지 않지만 적어도 저에게는 이러한 오류 메시지가 저를 미치게합니다. – Kincaid

1

오류 메시지에 나와 있듯이로드 및 beforeload 메서드는 패키지 된 응용 프로그램에서 사용할 수 없으며 샌드 박스가 적용된 iframe에도 적용됩니다. 다른 무엇이 비활성화되어 있는지 확인할 수 있습니다 here.

그런데, 필자는 sandboxed iframe에서 dojo 1.8을 시도했지만, 언로드 리스너를 설정하지 않는 한 Hello Dojo sample은 제대로 작동하는 것 같습니다.

+0

흠 ... 실제로 dojo를로드하는 것 외에도 많은 일을하고 있지 않았습니다. 아마도 파서와 내용 창 일 것입니다. – ddumont

+0

그게 궁금합니다. 사용 된 코드를 공유하여 문제를 일으켰습니까? Dojo가 변경했거나 사용했던 샘플이 너무 단순 할 수 있습니다. – mangini

+0

늦게 응답하여 죄송합니다. 나는 데모가 너무 단순하다는 것을 생각한다 ... 기본 dojo 파일을로드 할 때 많이 발생하지 않는다. (dojo.js를로드하고 async를 가질 때 실제로 일어나고있는 것은 모두 amd 로더가로드된다는 사실이다.) – ddumont

관련 문제