开发者

Setting Cookies using JavaScript in a local html file

开发者 https://www.devze.com 2023-03-10 12:39 出处:网络
I have the following directory tree:开发者_JS百科 + folder1 |--- folder2 |------ page1.html |--- page2.html

I have the following directory tree:

开发者_JS百科
+ folder1
|--- folder2
|------ page1.html
|--- page2.html

If I set some cookie in page1.html using JavaScript, what is the path used for that cookie?

Edit:

Let me explain it better. I'm working with a local file. page1.html is being accessed through /home/user/.../folder1/folder2/page1.html and not through a client machine using a HTTP Server.

Just to clarify:

It seems that some browsers (like Chrome) do not store cookies when using file:///, but both Firefox and Internet Explorer do.


From the MDC page for document.cookie:

If not specified, [the path argument] defaults to the current path of the current document location.

So in your case, it will be /folder1/folder2/.


I didn't initially see that you'd specified "local" in the question title -- not sure if this was updated while I was writing my answer. Cookies are not set when browsing using the file:/// protocol, depending on the browser.


Browsers do not store cookies for the file:// url protocol, it will simply and silently fail to set anything at all. So if this is truly "local" and not on a domain you may have a problem.


If you're on a mac, you can close Chrome and relaunch it like so:

/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --enable-file-cookies

You'll then be able to set cookies on local files.


set --enable-file-cookies for chrome and it should work for you. Also, there are some features that you'll have to set "accept all cookies" also to make work, but if you do, make sure you set back before going back online.


As workaround you can use Tampermonkey with access to local files ( How to include Local htm pages in a Tampermonkey script? ) By that way you will use Tampermonkey's storage, and will be able to set and get your data by functions GM_getValue(data) and GM_setValue(data). I used that for my local HTML page, which i used as customizable alternative to Windows Explorer


For those who are still looking for a way, try setting URL parameters instead of cookies

I had downloaded some novels in HTML for offline reading and there was no way to pass previously set font size to next chapters using cookies so what I did is shown below :

  1. First add a widow event listener that adds the font size parameter whenever a link(to next ch) is clicked
  2. And then window.onload function that takes the parameter value and changes the font size

<!DOCTYPE html>
<html lang="en" dir="ltr">
  <head>
    <meta charset="utf-8">
    <title></title>
  </head>
  <body>
    <a href="ch-02.html" >Next Chapter</a>
    <p id="content">Hope this helps</p>
    
<script>
var fontSize = 1;
window.addEventListener("click", function(e) {
    var href = e.target.getAttribute("href");
    if(href) {
        location.href = href + "?fontSize=" + fontSize;
        e.preventDefault();
     }
})
window.onload = function(){
  var url = new URL(window.location.href);
  var value = url.searchParams.get("fontSize");
  if(value != null){
    fontSize = parseFloat(value);
    document.getElementById("content").style.fontSize = fontSize + "em";
  }
}
</script>
    
  </body>
</html>

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号