相关疑难解决方法(0)

获取屏幕大小,当前网页和浏览器窗口

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

截图描述了需要哪些值

javascript jquery layout cross-browser

1927
推荐指数
15
解决办法
144万
查看次数

为什么setTimeout(fn,0)有时会有用?

我最近遇到了一个相当讨厌的错误,其中代码是<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()

javascript dom event-loop

833
推荐指数
11
解决办法
23万
查看次数

如何检查可见DOM中是否存在元素?

如何在不使用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)

javascript variables dom element exists

377
推荐指数
12
解决办法
79万
查看次数

如何将onload事件添加到div元素?

如何向元素添加onload事件?我可以用吗:

<div onload="oQuickReply.swap();" ></div>
Run Code Online (Sandbox Code Playgroud)

为了这?

html javascript

212
推荐指数
14
解决办法
57万
查看次数

如何确定是否已将动态创建的DOM元素添加到DOM中?

根据规范,只有BODYFRAMESET元素提供了一个"onload"事件来附加,但我想知道什么时候动态创建的DOM元素已经添加到JavaScript中的DOM.

我目前正在使用的超级天真的启发式方法如下:

  • 遍历元素的parentNode属性,直到找到最终的祖先(即parentNode.parentNode.parentNode.etc,直到parentNode为null)

  • 如果最终祖先具有已定义的非空属性

    • 假设有问题的元素是dom的一部分
  • 其他

    • 在100毫秒内再次重复这些步骤

我所追求的是确认我正在做的事情是足够的(再次,它在IE7和FF3中工作)或更好的解决方案,无论出于何种原因,我完全忘记了; 也许我应该检查其他属性等.


编辑:我想要一个与浏览器无关的方法,不幸的是,我并不住在一个浏览器的世界里; 也就是说,浏览器特定的信息是值得赞赏的,但是请注意哪个浏览器知道它确实有效.谢谢!

javascript dom

39
推荐指数
4
解决办法
3万
查看次数

是否可以确定何时使用JavaScript呈现元素?

有一个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 asp.net jquery updatepanel jquery-ui

11
推荐指数
1
解决办法
5872
查看次数