我怎样才能得到windowWidth,windowHeight,pageWidth,pageHeight,screenWidth,screenHeight,pageX,pageY,screenX,screenY将在所有主要浏览器工作?

我最近遇到了一个相当讨厌的错误,其中代码是<select>通过JavaScript动态加载的.这种动态加载<select>具有预先选择的值.在IE6中,我们已经有了修复所选内容的代码<option>,因为有时它<select>的selectedIndex值与所选<option>的index属性不同步,如下所示:
field.selectedIndex = element.index;
Run Code Online (Sandbox Code Playgroud)
但是,此代码无效.即使selectedIndex正确设置了字段,最终也会选择错误的索引.但是,如果我alert()在正确的时间插入声明,则会选择正确的选项.考虑到这可能是某种时间问题,我尝试了一些随机的东西,我之前在代码中看到过:
var wrapFn = (function() {
var myField = field;
var myElement = element;
return function() {
myField.selectedIndex = myElement.index;
}
})();
setTimeout(wrapFn, 0);
Run Code Online (Sandbox Code Playgroud)
这有效!
我已经找到了解决问题的方法,但是我很不安,因为我不知道为什么这会解决我的问题.有人有官方解释吗?使用"稍后"调用我的功能可以避免哪些浏览器问题setTimeout()?
如何在不使用getElementById方法的情况下测试元素是否存在?我已经设置了一个现场演示供参考.我也会在这里打印代码:
<!DOCTYPE html>
<html>
<head>
<script>
var getRandomID = function (size) {
var str = "",
i = 0,
chars = "0123456789abcdefghijklmnopqurstuvwxyzABCDEFGHIJKLMNOPQURSTUVWXYZ";
while (i < size) {
str += chars.substr(Math.floor(Math.random() * 62), 1);
i++;
}
return str;
},
isNull = function (element) {
var randomID = getRandomID(12),
savedID = (element.id)? element.id : null;
element.id = randomID;
var foundElm = document.getElementById(randomID);
element.removeAttribute('id');
if (savedID !== null) {
element.id = savedID;
}
return (foundElm) ? false : true; …Run Code Online (Sandbox Code Playgroud) 如何向元素添加onload事件?我可以用吗:
<div onload="oQuickReply.swap();" ></div>
Run Code Online (Sandbox Code Playgroud)
为了这?
根据规范,只有BODY和FRAMESET元素提供了一个"onload"事件来附加,但我想知道什么时候动态创建的DOM元素已经添加到JavaScript中的DOM.
我目前正在使用的超级天真的启发式方法如下:
我所追求的是确认我正在做的事情是足够的(再次,它在IE7和FF3中工作)或更好的解决方案,无论出于何种原因,我完全忘记了; 也许我应该检查其他属性等.
编辑:我想要一个与浏览器无关的方法,不幸的是,我并不住在一个浏览器的世界里; 也就是说,浏览器特定的信息是值得赞赏的,但是请注意哪个浏览器知道它确实有效.谢谢!
有一个jQuery等效于执行以下操作:
$(document).ready(function() {
Run Code Online (Sandbox Code Playgroud)
对于一个元素:
$(a).ready(function() {
Run Code Online (Sandbox Code Playgroud)
我在updatepanel中有内容,我在一些锚元素上调用jQuery UI的.button().更新updatepanel后,锚点将被重新呈现并丢失UI样式.
我已经知道如何使用.NET AJAX的add_endrequest(处理程序)检测ajax请求的结束,但是希望使用jQuery.delegate来获得更简洁的解决方案.
例如
$('body').delegate('#mybutton', 'load', (function(){ //this doesnt work... }
Run Code Online (Sandbox Code Playgroud) javascript ×6
dom ×3
jquery ×2
asp.net ×1
element ×1
event-loop ×1
exists ×1
html ×1
jquery-ui ×1
layout ×1
updatepanel ×1
variables ×1