如何保存当前URL并通过按钮单击加载它

时间:2016-02-05 21:20:56

标签: javascript jquery html html5 knockout.js

所以我目前遇到以下问题。

我有一个动态图表,我可以添加各种变量,图表显然会根据添加的变量而改变。添加或删除变量时,URL将根据这些变量自动更改,因此我可以获取该确切的URL并重新加载它,这将再次显示相同的选定变量。 URL不遵循设置格式,并且会按照选择的顺序将变量添加到其末尾。

我的问题我希望用户能够在文本框中输入名称,然后在“提交”中,当前网址将与用户名一起保存已指定(注意:我没有将URL保存到服务器)。然后,该名称将显示在多列表中,用户可以在其中选择一个选项,并且在选择时,应用程序将自动加载与该名称相关的特定URL。

我知道我需要(很可能)以下(伪)逻辑:

savePreset: function() { define url variable when user clicks 'Save' button, Fetch current URL and specified input name save URL }

列出预设我会在视图中使用数据绑定来显示,然后加载预设,我不太清楚如何解决这个问题。

我正在使用Knockout.Js,老实说我很难过。我已经尝试了几种方法来做到这一点,但我无法接近我需要的东西(我很确定这是一个简单的解决方案)。

如果有人对此有任何经验或知道以前的答案,或者可以帮助我,我将非常感激。

P.S:请注意我对JS的态度并不强,我对Knockout很新,所以我还在学习。

修改

我仍然无法在列表中显示它并指定相关URL的输入值。以下是我保存URL的新功能。

        ` setPreset: function() {
      var setCurrentLocation;

        if (!localStorage.setCurrentLocation) {
            setCurrentLocation = [];
        } else {
            setCurrentLocation = JSON.parse(localStorage.setCurrentLocation);
        }

        var ourLocation = [document.URL];

        setCurrentLocation.push(ourLocation);

      try {
          localStorage.setCurrentLocation = JSON.stringify(setCurrentLocation);
          console.log("Preset was Saved: " + ourLocation);
          return true;          
      }
      catch (e) {
          if (e == QUOTA_EXCEEDED_ERR) {
              alert("Preset Quota exceeded!");
          }
      }
  },`

我也试图像这样显示'list': <div data-bind="foreach: setPreset"> <span style="border: 1px solid" data-bind="text: ourLocation"></span> </div> 显然因为什么都没有储蓄,所以没有任何东西在显示。我认为,对于这个特定的位,定义为 setPreset: function () { self.setPreset.apply(self); }, var self = this;

我尝试将其指定为observableArray - 但代码不起作用。

2 个答案:

答案 0 :(得分:1)

我相信您想使用HTML5 localStorage来实现这一目标。

https://developer.mozilla.org/en-US/docs/Web/API/Window/localStorage

您可以将预设存储到localStorage,然后为用户加载所有预设。

答案 1 :(得分:1)

您只需将您的网址保存在本地存储中即可 你需要做的就是

var url=location.href;
localStorage.setItem("url",url);
function loadOldUrl(){
location.href=localStorage.getItem("url");
}
//when button clicked
document.querySelector("#myButton").addEventListener("click",loadUrl);

我认为这段代码可以帮到你 您可以阅读更多位置here和本地存储空间{{3}}