2016-10-02 3 views
1

도메인을 전환하고 내 새 도메인에서 동일한 IndexedDB를 계속 사용하는 옵션을 사용자에게 제공하려고합니다.IndexedDB : 다른 도메인으로 복사 하시겠습니까?

같은 출처 정책으로 인해 JavaScript에서 가능하지 않습니다. 그러나 사용자는 "기술 능숙"하며 모두 Chrome을 사용합니다.

사용자가 수동으로 IndexedDB를 한 도메인에서 다른 도메인으로 이동할 수있는 방법이 있습니까? Chrome 사용자 디렉토리에 파일 복사 작업이있을 수 있습니까?

답변

4

iframe 및 postMessage()을 사용하여 데이터를 전송할 수 있습니다. 새 도메인에서 이전 도메인의 iframe을 열고 message 이벤트 리스너를 설정하십시오. 기존 도메인에 데이터베이스를 열 때 데이터베이스를 크롤링하고 postMessage()을 부모 창에 표시하는 페이지를 제공하십시오. targetOrigin 매개 변수를 지정하여이를 올바른 새 도메인으로 제한하십시오. 일괄 처리 및 신호 완료를위한 적절한 메시지 체계를 고안해야합니다.

는 (크롬에서 색인 DB의 백업 저장소는 데이터 자체는 간단하게 파일을 이동할 수 없도록에서 원점을 포함합니다.)

+0

데이터 파일 중 하나 (예 : 일종의 메타 데이터 파일)에서 원천을 쉽게 편집 할 수 있습니까 아니면 일부 편집하기 어려운 이진 형식으로 숨겨져 있습니까? (이미 짐작 했겠지만 내 사용자는 적고 16 진수 편집기에서 파일을 편집 할 수있는 충분한 기술력이 있습니다.) 제안 된'postMessage()'접근법 (훌륭한 아이디어! –

+0

원본은 leveldb 내의 데이터베이스 메타 데이터 레코드에 대한 키 접두사로 존재합니다. 디렉토리에는 임의의 수의 leveldb 테이블 파일이 있으며, 데이터베이스 히스토리 (압축 등)에 따라 다르며 항목은 테이블 파일에 존재할 수 있습니다. 레코드는 테이블 내에서 압축됩니다. 그래서 짧은 대답 : 나는 인간이 그것을 할 수 있다고 생각하지 않는다. :(사용자 정의 레벨 클라이언트를 작성하고 Chrome의 주요 비교/디코드 루틴을 다시 구현하는 것은 기술적으로 가능합니다.) –

+0

시간과 통찰력을 가져 주셔서 감사합니다. 내보내기 가져 오기 방법을 알려 드리겠습니다. –

0

옵션 1 내보내기/가져 오기

objectstore.getall() //and done on each store. 

일부 거래에 새 사이트에 데이터를 추가하십시오.

//a few createobjectstore()  
for(var i in myobject.length){ 
    objecstore.add(myobject[i] 
} 

OPTION 2 경우 크롬 및 크롬 확장을 사용. 나는 내 앞 페이지가 없지만 확장 기능의 ID와 다른 확장 기능을 알고 있다면 크로스 사이트가 가능합니다.

chrome.runtime.message()는 확장 기능과 확장 기능의 백 페이지 사이를 말하기 위해 사용됩니다. 다른 사이트와 교신 할 필요가 있음과 함께 다른 확장 페이지.

관련 문제