GVKun编程网logo

只有在使用AJAX的Internet Explorer中使用alert()时,Javascript才会更新UI(以下只有在使用时才为该类型)

23

在这篇文章中,我们将为您详细介绍只有在使用AJAX的InternetExplorer中使用alert()时,Javascript才会更新UI的内容,并且讨论关于以下只有在使用时才为该类型的相关问题。此

在这篇文章中,我们将为您详细介绍只有在使用AJAX的Internet Explorer中使用alert()时,Javascript才会更新UI的内容,并且讨论关于以下只有在使用时才为该类型的相关问题。此外,我们还会涉及一些关于asp.net – 在Internet Explorer 8中使用ScriptManager.RegisterClientScriptBlock和jQuery时出现问题、Internet Explorer中的Google Maps JavaScript API错误、javascript – $.getJSON – 发送了ajax但忽略了回调函数 – Internet Explorer、javascript – blob创建期间Internet Explorer 11中的InvalidStateError的知识,以帮助您更全面地了解这个主题。

本文目录一览:

只有在使用AJAX的Internet Explorer中使用alert()时,Javascript才会更新UI(以下只有在使用时才为该类型)

只有在使用AJAX的Internet Explorer中使用alert()时,Javascript才会更新UI(以下只有在使用时才为该类型)

我在Internet Explorer中遇到问题,它适用于Firefox.

我有一个java脚本函数来更新在AJAX函数之前调用的UI(屏幕内容).但在使用警报框提示之前,它不会更新UI.没有警报框,它不会在AJAX功能之前更新UI.即使在AJAX函数之前调用它,它也会在AJAX函数之后更新UI

如果我使用以下代码,UpdateUI()在AJAX函数调用之前根本不更新UI,它在AJAX函数调用之后更新UI.我希望它在AJAX函数调用之前更新UI(实际上我在AJAX调用之前显示加载栏)

UpdateUI(); // java script function,it just updates inner HTML of a DIV

// AJAX function call here with Async = false

但是,如果我使用以下代码,UpdateUI()会在AJAX函数调用之前更新UI,但此方法包含警报提示.我不想使用警报

UpdateUI(); // java script function,it just updates inner HTML of a DIV

alert('hellow');

// AJAX function call here with Async = false

它在Firefox中运行良好,但在Internet Explorer 8中运行良好

解决方法

当存在活动的JS线程时,浏览器通常不会重排(刷新)UI.在执行重排之前,它会等待从ts事件队列中刷新所有事件.可以把它想象成一个单一的线程循环,浏览器必须在其中执行所有事件.

回流通常在某些情况下获得最低优先级,但是您可以通过请求DOM元素(如getComputedStyle或offsetX / y等)上的某些属性来强制浏览器重排.基本上任何要求浏览器布局UI以响应的请求都将执行重排.

This是我在遇到类似问题时发现的最好的文章.

我可以建议的最简单,最简单的技巧是将代码分成两个方法,并在0mills之后调用需要在超时中进行事先重排的方法.这使浏览器在调用method2之前有一些喘息的机会来执行重排.这与您尝试并发现有效的alert()技巧完全相同.

asp.net – 在Internet Explorer 8中使用ScriptManager.RegisterClientScriptBlock和jQuery时出现问题

asp.net – 在Internet Explorer 8中使用ScriptManager.RegisterClientScriptBlock和jQuery时出现问题

我想使用jQuery( http://stanlemon.net/projects/jgrowl.html#samples)的jGrowl插件在页面上显示一些消息.为此,我调用ScriptManager.RegisterClientScriptBlock方法,如下所示:
ScriptManager.RegisterClientScriptBlock(this,typeof(Page),Guid.NewGuid().ToString(),"$.jGrowl('" + message + "');",true);

该代码在Firefox / Chrome / Safari中非常完美.但是在Internet Explorer中我没有看到通知,我没有收到任何Javascript错误.

我在Windows 7下工作,我有Internet Explorer 8 Beta(版本8.0.7000.0),我在兼容模式下有相同的“错误”.

我怎么解决这个问题?

解决方法

出现此问题的原因是IE8期望在对DOM进行修改之前加载所有DOM元素.我能够复制你用jGrowl描述的问题.

为了解决这个问题,我只修改了你的脚本,以便在文档准备好后调用jGrowl.这是更新的代码:

ScriptManager.RegisterClientScriptBlock(this,"$(function(){$.jGrowl('" + message + "');});",true);

Internet Explorer中的Google Maps JavaScript API错误

Internet Explorer中的Google Maps JavaScript API错误

我已经为Google Maps JavaScript API v3编写了一个非常简单的jQuery插件.

它可以在Firefox,Chrome等系统中运行,但不能在Internet Explorer 8中运行.

我收到的错误是以下行上的“对象不支持此属性或方法” …

map = new google.maps.Map(mapContainer, myOptions);

我在网上放置了一个工作示例页面来演示…我正试图获得白金汉宫!您可以在jquery.simplemap.js文件中看到背后的代码,该代码没有缩小.

http://www.stevefenton.co.uk/cmsfiles/assets/File/simplemap.html

任何帮助将非常感激.

UPDATE

我已经通过这段代码进行了详细的调试,它实际上是Google代码内部的错误,这在很大程度上被缩小了,而且完全难以辨认-这就是为什么加载地图的原因,因为错误是在初始化地图之后进行的.我会在知道的时候发布更多信息.

UPDATE2

我已对插件中的各种东西进行了重新排序,这导致使地图显示正确的位置,但是由于初始化地图时Google Maps API中发生的错误,我无法添加标记或标注.

解决方法:

好的,我找到了解决此问题的方法.

Google Maps API内部引发的错误是由用于存储地图的变量范围引起的. API的所有示例都使用类似这样的内容…

map = new google.maps.Map(mapContainer, myOptions);

请注意,“地图”是这些出色的神秘范围变量之一…而且我正在jQuery插件中运行所有这些代码-因此最终结果是Google Maps API无法获得地图变量的句柄.

通过将地图声明为全局变量,Google Maps API可以访问它,并且一切神奇地开始正常运行.

所以解决方法是声明…

var map;

在全局范围内,因此API可以使用它.

javascript – $.getJSON – 发送了ajax但忽略了回调函数 – Internet Explorer

javascript – $.getJSON – 发送了ajax但忽略了回调函数 – Internet Explorer

所以这是我的功能

function ajax(addr,loading, loadTo, json){
        addr = addr.replace(' ', '');
        if (loading){
                $("#"+loading).fadeIn();
        }

        if (json){
                $.getJSON(addr, function(data){
                        alert('whoooo working'); // <--- it never goes here
                        if (loading){
                                $("#"+loading).fadeOut();
                        }
                        procJSON(data);
                });
                return true;
        }
}

而我正在呼唤它

var postid = $(this).attr('data-postid');
ajax(url+'tools/delete/'+postid, 'loading'+postid, false, true);

发送ajax,显示图像(加载图像),但从不调用回调函数.

这不是IE的大清单中的新保留值吗?是的,我知道,IE不是一个有效的浏览器,但我不能责怪我的客户

解决方法:

由于它在特定浏览器中失败,它可能是响应中意外标头的组合,以及浏览器如何根据它处理数据.

例如,如果响应具有内容类型text / html而不是application / json,则浏览器可能会尝试将响应内容转换为HTML文档(通过在其周围添加预标记),这将导致JSON解析失败.

如果您使用$.ajax方法,您还可以捕获任何错误消息,这将为您提供正在发生的事情的线索:

$.ajax({
  url: addr,
  dataType: 'json',
  success: function(data){
    alert('whoooo working'); // <--- it never goes here
    if (loading){
      $("#"+loading).fadeOut();
    }
    procJSON(data);
  },
  error: function(o,c,m) { alert(m); }
});

javascript – blob创建期间Internet Explorer 11中的InvalidStateError

javascript – blob创建期间Internet Explorer 11中的InvalidStateError

我在Blob创建行上得到了一个InvalidStateError,即11.不用说,它适用于Chrome和Firefox.
我可以看到二进制数据是我的客户端.有没有其他方法可以将其下载为文件?

var request= new ActiveXObject("MicrosoftXMLHTTP");
request.open("post",strURL,true);
request.setRequestHeader("Content-type","text/html");
addSecuretokenHeader(request);
request.responseType = 'blob';


request.onload  = function(event) {
if (request.status == 200) {
var blob = new Blob([request.response],{type: 'application/pdf'});
var url = URL.createObjectURL(blob);

var link = document.querySelector('#sim');
link.setAttribute('href',url);
var filename =  request.getResponseHeader('Content-disposition');
$('#sim').attr("download",filename);
$(link).trigger('click');
fireEvent(link,'click');

}else {
//handle error
}
}

解决方法

花了一些时间在这上面,实际发现添加新的Uint8Array工作:

var blob = new Blob([new Uint8Array(request.response)],{type:’application / pdf’});

我们今天的关于只有在使用AJAX的Internet Explorer中使用alert()时,Javascript才会更新UI以下只有在使用时才为该类型的分享就到这里,谢谢您的阅读,如果想了解更多关于asp.net – 在Internet Explorer 8中使用ScriptManager.RegisterClientScriptBlock和jQuery时出现问题、Internet Explorer中的Google Maps JavaScript API错误、javascript – $.getJSON – 发送了ajax但忽略了回调函数 – Internet Explorer、javascript – blob创建期间Internet Explorer 11中的InvalidStateError的相关信息,可以在本站进行搜索。

本文标签: