如何在iframe中使用";显示IndexedDB blob时绑定CSS/JS;src";属性和url?
我目前正在设置一个网页,该网页使用IndexedDB在该网页的iframe中显示html文档。此文档已作为blob在数据库中。另外,我想让这个网页在线和离线工作。我曾经帮助我从这一切开始 现在,我通过创建一个指向blob的url并将其放入iframe的src属性,一次显示一个文档。html文档显示得很好,但由于css和javascript文件在html源代码中通过“localhost:8080/my_css.css”之类的URL链接,因此我目前使用的是存储在服务器上的css/JS和图像,一旦我离线,这些文件将毫无帮助 我的问题是:有没有一种方法(如果可能的话非常简单)可以将存储在数据库中的CSS/JS/图像绑定到html文档,而无需修改这些文档的html代码以在iframe中完美地显示它们?我想我可以使用applicationcacheapi在本地存储我需要的文件,但是因为可能有很多CSS和JS文件,我宁愿使用indexeddbapi 非常感谢你的回答 我的HTML是什么样子的,如果有帮助的话:如何在iframe中使用";显示IndexedDB blob时绑定CSS/JS;src";属性和url?,iframe,blob,indexeddb,Iframe,Blob,Indexeddb,我目前正在设置一个网页,该网页使用IndexedDB在该网页的iframe中显示html文档。此文档已作为blob在数据库中。另外,我想让这个网页在线和离线工作。我曾经帮助我从这一切开始 现在,我通过创建一个指向blob的url并将其放入iframe的src属性,一次显示一个文档。html文档显示得很好,但由于css和javascript文件在html源代码中通过“localhost:8080/my_css.css”之类的URL链接,因此我目前使用的是存储在服务器上的css/JS和图像,一旦我离
<ul id="blob-list"> /*List of blobs is generated here */ </ul>
<iframe id="myframe" name="myframe"> /*My html documents are displayed here*/ </iframe>
<script type="text/javascript">
const DB_NAME = 'testdatabase';
const DB_VERSION = 1; // Use a long long for this value (don't use a float)
const DB_STORE_NAME = 'publications';
var db;
/**
* @returns Permet d'ouvrir la DB afin de pouvoir l'utiliser
*/
function openDb() {
/* Open Database, create a store if not any and display its content. Code based on MDN example */
}
/* setInViewer is called every time a blob is clicked in #blob-list */
function setInViewer(key) {
var store = getObjectStore(DB_STORE_NAME, 'readonly');
getBlob(key, store, function(blob) {
var iframe = newViewerFrame();
// Set a direct link to the blob to provide a mean to directly load it.
var blobURL = window.URL.createObjectURL(blob);
var myframe = document.getElementById("myframe");
myframe.setAttribute("src", blobURL);
window.URL.revokeObjectURL(blobURL);
});
}
openDB();
</script>
/*此处生成blob列表*/
/*我的html文档显示在此处*/
const DB_NAME='testdatabase';
const DB_VERSION=1;//对此值使用long long(不要使用浮点)
const DB_STORE_NAME='出版物';
var-db;
/**
*@returns Permet d'ouvrir la DB afin de pouvoir l'user
*/
函数openDb(){
/*打开数据库,创建一个存储(如果没有)并显示其内容*/
}
/*每次单击#blob列表中的blob时,都会调用setInViewer*/
函数setInViewer(键){
var store=getObjectStore(DB_store_NAME,'readonly');
getBlob(键、存储、函数(blob){
var iframe=newViewerFrame();
//设置到blob的直接链接,以提供直接加载它的方法。
var blobURL=window.URL.createObjectURL(blob);
var myframe=document.getElementById(“myframe”);
setAttribute(“src”,blobURL);
window.URL.revokeObjectURL(blobURL);
});
}
openDB();
我会选择应用程序缓存来实现它。它将更易于管理和更新