WebStorage是我最好的选择吗?

时间:2017-10-04 12:44:56

标签: javascript html5

所以,我有一个标签,我想填写文字。这个文本在几个页面上是相同的,我希望能够对这个文本进行更改,而无需单独编辑每个页面。

我可以使用javascript和WebStorage做到这一点,但它似乎不是最好的解决方案。有没有其他方法可以做到这一点?

我想避免为此使用sql server。请在下面的小提琴中查看我的工作代码。

工作代码:

<div id="1"></div>
<div id="2"></div>
<div id="3"></div>
<div id="4"></div>

<script>
// Check browser support
if (typeof(Storage) !== "undefined") {
    // Store
    localStorage.setItem("11", "some text1");
    localStorage.setItem("22", "some text2");
    // Retrieve
    localStorage.setItem("33", "some text3");
    localStorage.setItem("44", "some text4");    



    document.getElementById("1").innerHTML = localStorage.getItem("11");
    document.getElementById("2").innerHTML = localStorage.getItem("22");
    document.getElementById("3").innerHTML = localStorage.getItem("33");
    document.getElementById("4").innerHTML = localStorage.getItem("44");
} else {
    document.getElementById("topptur").innerHTML = "Web Storage er ikke støttet, last ned nyeste versjon av nettleseren din";
}
</script>

JSFiddle

2 个答案:

答案 0 :(得分:2)

你是对的,网络存储不是一个很好的解决方案。

至少有几个选项:

  1. A server-side include(您定义该文本的文件,然后使用服务器端机制将其包含在所有页面中)

  2. 您在所有要填写所需文字的网页上链接的单个JavaScript文件

  3. 在某些时候,您可以HTML imports客户端,但目前还没有强大的支持

  4. 例如,您的JS文件可能是:

    document.getElementById("1").innerHTML = "the text for 1";
    document.getElementById("2").innerHTML = "the text for 2";
    document.getElementById("3").innerHTML = "the text for 3";
    document.getElementById("4").innerHTML = "the text for 4";
    

    ...然后您将其包含在您想要该内容的页面中的最后一个元素之后。如果您希望更改内容,只需在JS文件中进行更改即可。

    一般来说,#1可能是更好的选择,至少在#3变得更可行之前。

答案 1 :(得分:0)

如果要对所有文件使用相同的文本,可以使用这些方法

您可以在模板中使用数据并在项目的任何位置使用它,这似乎是一个更好的选择。