0

Twitter Notifier 확장자를 FF로 이식하려고합니다.
JavaScript로 익숙하지 않아서 extension factory을 FF로 변환하기 만했습니다.Firefox로 이식 된 Chrome 확장 기능이 작동하지 않습니다 (indexedDB 오류)

불행히도 작동하지 않습니다. HTML5 바탕 화면 알림을받지 못했습니다.
코드를 조금 봤는데 문제가 'resources \ extension-data \ js'경로에있는 twitter.js와 같다고 생각합니다.

http://pastebin.com/C0NqU4Ur

우선은

twitter.messagesDB = window.mozIndexedDB.open("messagesDB"); 

twitter.messagesDB = window.webkitIndexedDB.open("messagesDB"); 

을 변경했지만 여전히 작동하지 않습니다. 오류 콘솔도 오류를 표시하지 않습니다.

twitter.messagesDB.onsuccess 함수에 console.log 명령을 입력하면 오류 콘솔에 아무 것도 출력되지 않습니다. onerror 함수를 만들 때도 출력이 없습니다. 그래서 try 및 catch 절을 사용하여 함수를 둘러싸고 있지만 오류는 발생하지 않습니다.

그래서 twitter.messagesDB = twitter.messagesDB.result;를 넣으려고했습니다. 함수에서 벗어나 다음 오류가 오류 콘솔에 표시됩니다.

Error: uncaught exception: [Exception... "A mutation operation was attempted on a database that did not allow mutations." code: "6" nsresult: "0x80660006 (NS_ERROR_DOM_INDEXEDDB_NOT_ALLOWED_ERR)" location: "chrome-extension://gjlehiopfilnaggndcmbhphaglkbkekf/js/twitter.js Line: 28"] 

그 의미는 무엇입니까? Firefox에서 어떻게 작동합니까?

미리 감사드립니다.

편집 : 윈도우

+1

확장 팩토리가 확장을 위해 사용자 정의 '크롬 확장'프로토콜을 만들었습니다. 나는 그 프로토콜에서 IndexedDB를 사용하는 것이 불가능하다고 생각한다. 이것이 자동 변환 서비스의 문제점입니다. 플랫폼 간의 차이점을 숨기려고 시도하지만 너무 많습니다. –

+0

너무 나쁨. 확장 버전의 이전 버전을 유지해야한다고 생각합니다. IndexedDB를 사용하지 않고 작동 중입니다. 적어도 알림. – TheLostOne

답변

1

이 12 월 2011 게시 된 최신 IndedexDB 프로토콜을 지원 색인화의 파이어 폭스 구현 간의 비 호환성으로 인해, 그리고 버전을 지원하는 크롬 구현, 파이어 폭스 (12)를 사용하고 있습니다 그 전에.

최신 변경 (FF)은 onupgradeneeded 이벤트와 콜백을 사용하는 반면, 이전 (Chrome) 구현에서는 setVersion 트랜잭션을 사용하는 데이터베이스가 생성되는 방식입니다.

이 변경 사항을 확인하려면 please star this issue.

+1

정보 주셔서 감사합니다! 문제에 별표를 표시했습니다. – TheLostOne

관련 문제