gpt4 book ai didi

javascript - 将 Fineuploader 与 ASP.NET 网络表单一起使用。对严格模式调用函数的访问被审查

转载 作者:行者123 更新时间:2023-11-30 12:33:56 24 4
gpt4 key购买 nike

我目前正在将 fineuploader 与 ASP.NET webforms 一起使用,但在 FireFox 中遇到了严格模式的问题。 ASP.NET webforms 有一个 javascript 文件 (microsoftajaxwebforms.js),其中包含以下代码(这用于回发到服务器并调用传递的事件,例如下面的 Save。):

_doPostBack: function(a, k) {
var f = window.event;
if (!f) {
var d = arguments.callee ? arguments.callee.caller : null;
if (d) {
var j = 30;
while (d.arguments.callee.caller && --j) d = d.arguments.callee.caller;
f = j && d.arguments.length ? d.arguments[0] : null
}
}
...

我正在使用的代码库中大量使用了该函数。由于担心对产品的其余部分产生意外的副作用,我无法更改此代码。问题出在 arguments.callee.caller 上。这就是引发错误 access to strict mode caller function is censored 的原因。我相信解决方案是从 fineuploader.js 中删除 use strict,但我担心这会如何影响其他浏览器中的 fineuploader。我不熟悉 javascript 中的严格模式,所以也许有人可以阐明从 fineuploader.js 中删除严格模式可能产生的副作用。作为引用,这里是最终调用上述代码并导致错误的 fineuploader 函数。

var fineUploader = $('#jquery-wrapped-fine-uploader').fineUploader({
...
multiple: false,
text: {
uploadButton: 'Click or drag a file to upload.'
},
autoUpload: false,
debug: false,
template: 'fineuploader-template',
...
}
}).bind('complete', function (event, id, name, response) {
if (response['success']) {
cp_hide();
fineUploader.fineUploader('reset');
__doPostBack("Save", "");
}
})...

如果需要,我可以修改 microsoftajaxwebforms.js 中引用的代码之外的任何内容。感谢您的帮助。

最佳答案

根据 jQuery 票证 (http://bugs.jquery.com/ticket/13335) 的解决方法是在客户端手动调用事件,而不是直接调用 __doPostBack

$('#Save').trigger('click');

但是,如果您尝试从客户端事件中触发回发,trigger 选项将不起作用。相反,您可以使用丑陋但可靠的 setTimeout 来退出 strict 模式。

$('#Save').on('click', function(e) {
var result = doSomeStuff();
if(result.success) {
window.setTimeout(function() { __doPostBack('Save', '') }, 5);
}
// ...
});

jQuery 最终在 2 年前删除了 use strict,因此升级 jQuery(如果可能)也应该可以解决问题。

关于javascript - 将 Fineuploader 与 ASP.NET 网络表单一起使用。对严格模式调用函数的访问被审查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26718805/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com