Javascript:是否将任何数据导入浏览器页面?

Javascript:是否将任何数据导入浏览器页面?,javascript,Javascript,url散列是向浏览器页面提供数据的唯一方法吗 例如,我想保存一些不带服务器端的用户设置,并从另一台pc上的用户检索它们 使用散列可以生成url并要求用户将url或快捷方式保存在USB闪存上 如果还有其他方法吗?你说: 使用散列可以生成url。因此,url在向浏览器页面提供数据的方式上必须是唯一的。客户端确实没有其他方法。由于URL是使资源唯一的方法(或:保存设置),因此您可以使用它存储数据的任何内容。请注意,只有散列部分不会发送到服务器 位置URL的属性http://www.iana.org/d

url散列是向浏览器页面提供数据的唯一方法吗

例如,我想保存一些不带服务器端的用户设置,并从另一台pc上的用户检索它们

使用散列可以生成url并要求用户将url或快捷方式保存在USB闪存上

如果还有其他方法吗?

你说:
使用散列可以生成url。因此,url在向浏览器页面提供数据的方式上必须是唯一的。客户端确实没有其他方法。

由于URL是使资源唯一的方法(或:保存设置),因此您可以使用它存储数据的任何内容。请注意,只有散列部分不会发送到服务器

位置
URL的属性
http://www.iana.org/domains/example/page?data=xyz#hash

{
    "hash": "#hash",
    "host": "www.iana.org",
    "hostname": "www.iana.org",
    "href": "http://www.iana.org/domains/example/page?data=xyz#hash",
    "pathname": "/domains/example/page",
    "port": "",
    "protocol": "http:",
    "search": "?data=xyz"
}
不建议以这种方式传输敏感数据(密码、个人信息)。即使它在服务器上不可见,也将在浏览器历史记录中可见

您可以使用
encodeURIComponent
函数转义特殊字符,如
#
&

哈希URL示例,如
#字段:数据;字段2:data2
(也可以使用其他分隔符):

//默认设置
变量设置={
“郎”:“恩”,
“风格”:“绿色”
};
//应在使用设置之前调用此选项
函数loadSettings(){
//把零件放在#后面,并用`分开`
var hashSettingsArray=location.hash.substr(1).split(“;”);
对于(VARI=0;I1?decodeURIComponent(hashSettingArray[1]):“”;
设置[键]=值;
}
}
}
函数getSettingsHash(){
var settingsArray=[];
用于(设置中的var设置){
var key=encodeURIComponent(设置);
var值=组件(设置[设置]);
设置ray.push(键+”:“+值);
}
//示例返回值:#lang:en;样式:绿色
返回“#”+setingsarray.join(“;”);
}

也许你应该解释你为什么要做这样的事情。这毫无意义:\n如果你想要浏览器的可移植性,设置应该保存在服务器中。我想避免用户注册。好吧,有一个查询字符串
?user=foo&hobby=bar
…否则你需要服务器端用户注册(可移植)或cookies(不可移植)使用openid..登录twitter、facebook和google,几乎可以肯定用户将拥有其中的一个!可以使用哈希保存链接。稍后用户只需跟随该链接,javascript就会从中读取哈希。顺便问一下,一个哈希中可以存储多少数据?是否可以在url中以某种方式打开哈希链?因此它们可以连接并存储在localStorage或cookie中。有关URL的最大长度,请参阅上的答案。使用多个URL不是一个好主意,为什么不创建一个包含所有存储设置的文本字段,以便用户可以复制它?是的,但用户应该打开记事本,将它们复制到记事本,然后将它们保存到USB设备中。But使用url快捷方式更简单。只需将url拖动到usb文件夹,然后在另一台电脑上双击它即可。是不是更简单?为什么不制作一个HTML表单,用户可以将其保存在记事本中?然后用户只需打开
saved.html
文件,浏览器就会导入数据。那么有没有办法在同一个选项卡中创建一个URL链来打开?可能是快捷方式中的一些跨浏览器参数?
// default settings
var settings = {
   "lang": "en",
   "style": "green" 
};
// this should be called before the settings are used
function loadSettings() {
    // get the part after # and split it by `;`
    var hashSettingsArray = location.hash.substr(1).split(";");
    for (var i=0; i<hashSettingsArray.length; i++) {
        var hashSettingArray = hashSettingsArray[i].split(':');
        var key = decodeURIComponent(hashSettingArray[0]);
        // if the key exists in the settings object, accept it
        if (key in settings) {
            // accept #field without value, defaulting to an empty string
            var value = hashSettingsArray.length > 1 ? decodeURIComponent(hashSettingArray[1]) : "";
            settings[key] = value;
        }
    }
}
function getSettingsHash() {
    var settingsArray = [];
    for (var setting in settings) {
        var key = encodeURIComponent(setting);
        var value = encodeURIComponent(settings[setting]);
        settingsArray.push(key + ":" + value);
    }
    // example return value: #lang:en;style:green
    return "#" + settingsArray.join(";");
}