我的Web应用程序的用户可能打开了多个浏览器窗口并指向同一页面.我希望页面中某些内容的状态(通过ajax加载)在回发中保留.我可以存储在cookie中或存储在我的服务器上.无论哪种方式,我都想不出如何区分每个窗口.
例如,假设用户Bob有两个浏览器窗口打开ListOfSomething页面.每个列表都有一个LoadedPageNumber属性,我需要保留它.否则用户在刷新时总是在第1页结束.Bob可能已加载浏览器窗口1并将其指向第5页,然后加载浏览器窗口2并将其指向第14页.如果我只是根据会话ID存储该属性,则Bob将在窗口1中获取第14页(如果他刷新).
请注意,我的状态变量实际上比这个简单的例子复杂得多,而且我无法坚持它们可能会导致很大的问题(我的应用程序存在缺陷).
我需要某种浏览器窗口ID或其他东西.它当然需要是一个跨浏览器的解决方案(IE6 +,Wekbit?+,FF2 +)
有任何想法吗?
关于相关性的注意事项:请记住,这对于将较旧的基于表单的页面与较新的启用AJAX的项目混合的情况也很有用.有时您需要回发表单,并且您不希望丢失一些客户端状态值.
我有一个脚本,当用户加载时,创建一个唯一的ID.然后将其保存localStorage并用于跟踪交易.有点像使用cookie,除非由于浏览器生成唯一ID,因此在发送到服务器时可能会发生冲突.现在我正在使用以下代码:
function genID() {
return Math.random().toString(36).substr(2)
+ Math.random().toString(36).substr(2)
+ Math.random().toString(36).substr(2)
+ Math.random().toString(36).substr(2);
}
Run Code Online (Sandbox Code Playgroud)
我意识到这是一个超级基本的实现,并希望获得一些反馈,以更好的方法来创建一个"更随机"的ID,以防止服务器上的冲突.有任何想法吗?
在html中,当我们点击文本或将鼠标悬停在单选按钮或复选框的文本上时,我们可以使用html选择它,如下所示:
<label>
<input type="checkbox" />option 1
</label>
Run Code Online (Sandbox Code Playgroud)
要么
<input id="checkboxid" type="checkbox" />
<label for="checkboxid">option 1</label>
Run Code Online (Sandbox Code Playgroud)
我试图通过淘汰赛获得相同的行为,但无法找到相同的帮助:
<label data-bind="text: $data.optiontext">
<input type="checkbox" data-bind="value: $data.optionvalue, checked: $parent.selectedOptions" />
</label>
Run Code Online (Sandbox Code Playgroud)
下面的视图(或html)(注意下面的代码不包含上面的html,所以当你尝试它时,你需要进行上述更改并检查它):
<div data-bind="foreach: options">
<input type="checkbox" data-bind="value: $data.optionvalue, checked: $parent.selectedOptions" />
<label data-bind="text: $data.optiontext"></label>
</div>
<hr />
<div data-bind="text: selectedOptionsList"></div>?
Run Code Online (Sandbox Code Playgroud)
这是视图模型:
var viewModel = {
options: [
{ optiontext: 'Simple', optionvalue: "1" },
{ optiontext: 'Advanced', optionvalue: "2" }
],
selectedOptions: ko.observableArray(["2"])
};
viewModel.selectedOptionsList = ko.computed(function() {
return this.selectedOptions().join(",");
}, viewModel);
ko.applyBindings(viewModel);
Run Code Online (Sandbox Code Playgroud)
这是jsFiddle链接: …
反正在javascript中为浏览器创建一个唯一的ID?
我不是在谈论每次生成它时随机的ID,而是一个生成的浏览器所特有的ID,但也考虑了它运行的计算机.
例:
Windows 7 Chrome可能会生成:asdh128hakj4gh
Windows 7 Opera可能会生成:23hjad823hjakk
Windows 7 Chrome,差异硬件,可能会生成:asd238881jaal
等等...
反正有没有这样做?
我希望用户只能在浏览器中的一个选项卡上浏览我的网站.如何才能做到这一点?我会使用javascript和cookies吗?
例如,我有一个网站:www.example.com - 我希望我的客户只能在一个浏览器中从一个标签访问该网站.如果他们打开另一个选项卡并加载站点(或站点的子页面) - 我想要一个警告" 无法打开多个实例 ",然后将它们重定向到错误页面.
一旦注意到 - 如果用户将地址从www.example.com/action/door/mine.aspx更改为www.example.com - 应该可以正常工作,因为用户位于相同(原始)选项卡中.
任何帮助将不胜感激.提前致谢.
在我的数据库方案中,我需要一个自动增量主键.我怎么能实现这个功能?
PS要访问DynamoDB,我使用倍增极了Node.js的,模块
我想在 Javascript 中定义两个函数(或类),它们具有完全相同的函数体,但它们是完全不同的对象。用例是我在主体中有一些通用逻辑,它是多态的(函数可以接受多种类型),但是通过只调用具有单一类型的函数,函数最终会更快,我假设因为 JIT 可以在每种情况下都采取更快乐的快速路径。
一种方法是简单地完全重复函数体:
function func1(x) { /* some body */ }
function func2(x) { /* some body */ }
Run Code Online (Sandbox Code Playgroud)
另一种以较少重复完成相同事情的方法是eval():
function func(x) { /* some body */ }
function factory() { return eval("(" + func.toString() + ")") }
let func1 = factory(), func2 = factory()
Run Code Online (Sandbox Code Playgroud)
eval()当然,缺点是任何其他工具(缩小器、优化器等)都完全出乎意料,并且有可能破坏我的代码,因此这不起作用。
在标准工具链(我使用 Typescript、esbuild 和 Vite)的范围内,是否有任何明智的方法可以做到这一点,而不使用技巧eval()或只是复制粘贴代码?我也有关于类定义的类似问题。
编辑:总结评论中发生的事情:
function factory() { function func() { /* some body …Run Code Online (Sandbox Code Playgroud)是否有一个JavaScript函数重复每隔这么多毫秒按下一个html按钮?如果可以使用标准JavaScript完成它会很棒,但使用jQuery或jQuery插件也会很棒.
我是本地反应新手,正在世博会上从事我的第一个项目。我正在尝试为用户下的每个订单生成唯一的 ID,以下是我尝试过的
const orderId = () => {
var S4 = () => {
return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);
};
return (
S4() +
S4() +
"-" +
S4() +
"-" +
S4() +
"-" +
S4() +
"-" +
S4() +
S4() +
S4()
);
};
console.log(orderId);
Run Code Online (Sandbox Code Playgroud)
我在终端中得到的是 [Function orderId]
我需要在浏览器中生成唯一的ID.目前,我正在使用这个:
Math.floor(Math.random() * 10000000000000001)
Run Code Online (Sandbox Code Playgroud)
我想使用当前的UNIX时间((new Date).getTime()),但我很担心,如果两个客户端产生的IDS 确切的同时,他们也不会是唯一的.
我可以使用当前的UNIX时间(我想因为那种方式会存储更多信息)吗?如果没有,最好的方法是什么(可能是UNIX时间+ 2个随机数字?)
javascript ×8
jquery ×2
ajax ×1
browser ×1
cookies ×1
database ×1
ecmascript-6 ×1
generator ×1
html ×1
knockout.js ×1
node.js ×1
nosql ×1
persistence ×1
react-native ×1
state ×1
tabs ×1
unique ×1