相关疑难解决方法(0)

在javascript中,如何从另一个浏览器窗口中唯一标识同一个基于cookied的sessionId的浏览器窗口

我的Web应用程序的用户可能打开了多个浏览器窗口并指向同一页面.我希望页面中某些内容的状态(通过ajax加载)在回发中保留.我可以存储在cookie中或存储在我的服务器上.无论哪种方式,我都想不出如何区分每个窗口.

例如,假设用户Bob有两个浏览器窗口打开ListOfSomething页面.每个列表都有一个LoadedPageNumber属性,我需要保留它.否则用户在刷新时总是在第1页结束.Bob可能已加载浏览器窗口1并将其指向第5页,然后加载浏览器窗口2并将其指向第14页.如果我只是根据会话ID存储该属性,则Bob将在窗口1中获取第14页(如果他刷新).

请注意,我的状态变量实际上比这个简单的例子复杂得多,而且我无法坚持它们可能会导致很大的问题(我的应用程序存在缺陷).

我需要某种浏览器窗口ID或其他东西.它当然需要是一个跨浏览器的解决方案(IE6 +,Wekbit?+,FF2 +)

有任何想法吗?

关于相关性的注意事项:请记住,这对于将较旧的基于表单的页面与较新的启用AJAX的项目混合的情况也很有用.有时您需要回发表单,并且您不希望丢失一些客户端状态值.

ajax persistence state

28
推荐指数
1
解决办法
4万
查看次数

在JavaScript中创建全局唯一ID

我有一个脚本,当用户加载时,创建一个唯一的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,以防止服务器上的冲突.有任何想法吗?

javascript

27
推荐指数
1
解决办法
2万
查看次数

在淘汰赛中标记复选框和收音机

在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链接: …

html javascript knockout.js

26
推荐指数
1
解决办法
1万
查看次数

JavaScript唯一浏览器ID

反正在javascript中为浏览器创建一个唯一的ID?

我不是在谈论每次生成它时随机的ID,而是一个生成的浏览器所特有的ID,但也考虑了它运行的计算机.

例:

Windows 7 Chrome可能会生成:asdh128hakj4gh

Windows 7 Opera可能会生成:23hjad823hjakk

Windows 7 Chrome,差异硬件,可能会生成:asd238881jaal

等等...

反正有没有这样做?

javascript unique generator uniqueidentifier

23
推荐指数
3
解决办法
5万
查看次数

阻止人们将我的网站加载到多个标签上

我希望用户只能在浏览器中的一个选项卡上浏览我的网站.如何才能做到这一点?我会使用javascript和cookies吗?

例如,我有一个网站:www.example.com - 我希望我的客户只能在一个浏览器中从一个标签访问该网站.如果他们打开另一个选项卡并加载站点(或站点的​​子页面) - 我想要一个警告" 无法打开多个实例 ",然后将它们重定向到错误页面.

一旦注意到 - 如果用户将地址从www.example.com/action/door/mine.aspx更改为www.example.com - 应该可以正常工作,因为用户位于相同(原始)选项卡中.

任何帮助将不胜感激.提前致谢.

javascript browser cookies tabs

21
推荐指数
5
解决办法
4万
查看次数

如何在DynamoDB中创建UUID?

在我的数据库方案中,我需要一个自动增量主键.我怎么能实现这个功能?

PS要访问DynamoDB,我使用倍增极了Node.js的,模块

database nosql node.js amazon-dynamodb

21
推荐指数
5
解决办法
3万
查看次数

在 Javascript 中制作函数的真实副本

我想在 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()或只是复制粘贴代码?我也有关于类定义的类似问题。


编辑:总结评论中发生的事情:

  1. 是的,性能差异是真实且可衡量的(尤其是在 Chrome 上,在 Firefox 和 Safari 上不那么明显),正如这个微基准所证明的那样。引发这个问题的真实程序要大得多,性能差异也更明显,我怀疑是因为 JIT 可以为单态函数做更多的内联,这会产生许多连锁反应。
  2. 返回闭包的明显解决方案不起作用,即
    function factory() { function func() { /* some body …
    Run Code Online (Sandbox Code Playgroud)

javascript ecmascript-6

18
推荐指数
2
解决办法
485
查看次数

鼠标按住时JavaScript重复操作

是否有一个JavaScript函数重复每隔这么多毫秒按下一个html按钮?如果可以使用标准JavaScript完成它会很棒,但使用jQuery或jQuery插件也会很棒.

javascript jquery

17
推荐指数
4
解决办法
1万
查看次数

如何在React Native中生成唯一的ID

我是本地反应新手,正在世博会上从事我的第一个项目。我正在尝试为用户下的每个订单生成唯一的 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]

javascript uniqueidentifier react-native

17
推荐指数
2
解决办法
3万
查看次数

生成唯一ID的最佳方法客户端(使用Javascript)

我需要在浏览器中生成唯一的ID.目前,我正在使用这个:

Math.floor(Math.random() * 10000000000000001)
Run Code Online (Sandbox Code Playgroud)

我想使用当前的UNIX时间((new Date).getTime()),但我很担心,如果两个客户端产生的IDS 确切的同时,他们也不会是唯一的.

我可以使用当前的UNIX时间(我想因为那种方式会存储更多信息)吗?如果没有,最好的方法是什么(可能是UNIX时间+ 2个随机数字?)

javascript jquery

16
推荐指数
3
解决办法
6万
查看次数