首先,由于隐私问题,我无法提供准确的代码,但我会尝试尽可能准确。
$(".page").each( function() {
var this_dom = $(this);
var this_class = this_dom.attr("class");
var page_no = this_class.substr(this_class.indexOf("page_")+5,1);
var obj = {};
obj.id = 'page_' + page_no;
obj.encoded_html = encodeBase64("<html><head><style>"+css+"</style></head><body>"+ $(this).html() +"</body></html>" );
obj.quality = 10;
obj.height = 2200;
obj.width = 1700;
obj.format = 'png';
$.ajax({
type: "POST",
url: "some url",
data: obj,
dataType: 'json',
success: function(res) {
page_cnt++;
$("form.cmxform").append('<input type="hidden" name="page_'+(page_no)+'" value="'+res['img']+'">'); // PRODUCTION
if (page_cnt === page_total) {
form.submit();
}
return false;
}
});
});
这是做什么的,它循环遍历所有带有.page类的标签,对内部进行编码,使用ajax发布它,然后将其呈现为png,然后重新编码发回,然后附加到表单。一旦它完成了所有这些,它就会通过另一个.php文件将数据uri提交到数据库。
这已经工作了很长时间,并且使用其他形式我仍然可以正常工作,但我确实有一个有7个“页面”,大约在第4个之后我得到FF中的无响应脚本错误消息,这个刚刚开始发生。适用于Chrome,甚至是IE。此外,如果FireBug是开放的,这永远不会失败,我甚至没有提供断点或任何东西,只是让它打开一切似乎工作正常。
此外,Unresponsive Script错误是随机的,有一次它可能是jquery库,另一次它将是我使用的base64库,但大多数时候它会将jquery库吐出错误。
我对jquery和js相当陌生,几乎是自学成才,而且SO帮助很多,你能帮我一次吗?!
答案 0 :(得分:0)
可能与服务器请求耗时过长,firefox扩展或其他事情有关。可能需要使用这样的东西来绕过firefox超时。
setTimeout(pageFunction, 8000);
function pageFunction () {
$(".page").each( function() {
var this_dom = $(this);
var this_class = this_dom.attr("class");
var page_no = this_class.substr(this_class.indexOf("page_")+5,1);
var obj = {};
obj.id = 'page_' + page_no;
obj.encoded_html = encodeBase64("<html><head><style>"+css+"</style></head><body>"+ $(this).html() +"</body></html>" );
obj.quality = 10;
obj.height = 2200;
obj.width = 1700;
obj.format = 'png';
$.ajax({
type: "POST",
url: "some url",
data: obj,
dataType: 'json',
success: function(res) {
page_cnt++;
$("form.cmxform").append('<input type="hidden" name="page_'+(page_no)+'" value="'+res['img']+'">'); // PRODUCTION
if (page_cnt === page_total) {
form.submit();
} return false;
}
});
});
}
答案 1 :(得分:0)
Firefox 24稍微改变了它检测阻止页面的脚本的方式,因此用户无法与之交互。
特别是,它现在包括在脚本运行时同步XMLHttpRequest调用所花费的所有时间。由于您在全局范围内强制所有jQuery ajax()
内容同步,因此网络访问所花费的时间现在被视为脚本执行时间的一部分,因为在此期间用户无法与页面交互。脚本被阻止10秒后(默认情况下;更改确切时间)Firefox会询问用户是否要删除有问题的脚本;那是你看到的提示。