小编Ada*_*mat的帖子

beforeunload或onbeforeunload

我不知道我应该使用哪一个:beforeunload或者onbeforeunload它们似乎都做了非常相似的事情,但具有不同的浏览器兼容性.

一些背景:

我有一张表格.在页面加载时,我将表单序列化并将其保存在变量中.如果用户离开页面,我将表格序列化并比较两者,看看是否有任何变化.但是,如果提交表单,则不应触发该事件.

例1

我按预期工作了.我只是不明白两者之间的区别:

window.onbeforeunload = function(e) {
    if(strOnloadForm != strUnloadForm)
        return "You have unsaved changes.";
}
Run Code Online (Sandbox Code Playgroud)

使用此行停止在保存表单时触发(绑定到.submit())

window.onbeforeunload = null;
Run Code Online (Sandbox Code Playgroud)

例2

window.addEventListener("beforeunload", function( event ) {
    if(strOnloadForm != strUnloadForm)
        event.returnValue = "You have unsaved changes.";
});
Run Code Online (Sandbox Code Playgroud)

使用此行停止在保存表单时触发(绑定到.submit())

window.removeEventListener("beforeunload");
Run Code Online (Sandbox Code Playgroud)

文档说的是什么

我已经阅读了onbeforeunloadbeforeunload的文档.在Notesonbeforeunload部分下,它指出:

可以并且应该通过window.addEventListener()beforeunload事件处理此事件.那里有更多文档.1

这让我觉得我应该使用后者.但是,removeEventHandler的文档说明了这一点:

addEventListener()并且removeEventListener()不存在于旧版浏览器中.您可以通过在脚本的开头插入以下代码来解决此问题,允许使用addEventListener() …

javascript onbeforeunload javascript-events

21
推荐指数
1
解决办法
2万
查看次数

用另一个对象替换一个javascript对象

在页面加载,我创建了两个JavaScript对象,objDemo1objDemo1Backup其中后者仅仅是第一的精确副本.

例如

objDemo1 { 
    sub_1 = { something: 123, somethingElse: 321 },
    sub_2 = { something: 456, somethingElse: 654 }
}
Run Code Online (Sandbox Code Playgroud)

我可以修改值sub_以及添加/删除新sub_的但是我正在编辑的唯一对象是objDemo1.即我永远不会改变objDemo1Backup

我有一个重置按钮,单击该按钮将重置objDemo1为最初加载页面时的状态(即objDemo1 = objDemo1Backup).这是我遇到问题的地方..

如何设置objDemo1objDemo1Backup

我试过了:

objDemo1 = objDemo1Backup;
Run Code Online (Sandbox Code Playgroud)

objDemo1 = null;
var objDemo1 = objDemo1Backup;
Run Code Online (Sandbox Code Playgroud)

...以及类似的变化,但似乎没有任何工作.有任何想法吗?

  • 注意:我可以确认,在重置时,objDemo1Backup它与我创建它并objDemo1更改时完全相同.
  • 我的代码肯定会达到"重置"功能,我已经尝试了objDemo1 = objDemo1Backup...我只是无法弄清楚替换对象的语法.

javascript reset javascript-objects

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

当img不是块元素时,包装器上的额外高度?

我以为我理解内联和块元素是如何工作的,但是这引起了我的兴趣.我找到了解决问题的方法,但我不知道为什么会这样.

出于某种原因,如果你有一个img内部a div,div就像3.5px比图像更高.但是,如果将图像设置为块元素,则此额外高度将消失.

基本HTML:

<div id="wrapper">
        <img src="http://www.basini.com/wp-content/uploads/2013/02/seeing-in-the-dark.jpg" width="300" height="230"  />
</div>
Run Code Online (Sandbox Code Playgroud)

而CSS:

#wrapper {
    background: orange;
}
#wrapper img {
    /* display: block; this will remove the extra height */
}
Run Code Online (Sandbox Code Playgroud)

我已经设置了一个jsfiddle来演示效果

为什么会发生这种情况,以及为什么将'img'作为块元素来修复它?还有其他解决方案吗?

html css

6
推荐指数
1
解决办法
923
查看次数

ajax - 在写入页面之前检查图像是否已加载

在我认为这个项目结束之后,我遇到了一些我刚刚发现的问题.它在我的本地服务器上工作得很好但是当我实时推送代码时,图像可能需要半秒才能正确加载,导致在加载图像上弹出一个小页面缩略图.哎呀

替代文字http://img815.imageshack.us/img815/985/loading.jpg

那么最近发生了什么?首先,运行一个函数,在window.load该函数上创建了大量列表项,其中加载gif作为bg图像.

然后,此函数将<img>标记弹出到第一个列表项中,并onload调用第二个函数

第二个函数循环遍历XML文件,并将xml中的URL包装在<img>标记中,并将其放在下一个空格中LI.这就是问题所在.目前<img src=$variable onload=loadnextimage() />它在实际加载之前将它放入List项.

我的代码:

$(window).load(function() {
            txt="";
            for(d=0;d<100;d++)
            {
                txt=txt + "<li class='gif' id='loading"+d+"'></li>"; 

            }
            document.getElementById('page-wrap').innerHTML=txt;
            document.getElementById('loading0').innerHTML="<img src='images/0.jpg' onLoad='loadImages(0)' />";
        });
        function loadImages(i){ 
            i++
            $.ajax
            ({
                type: "GET",
                url: "sites.xml",
                dataType: "xml",
                async: "true",
                success: function(xml) 
                {
                    var img = $(xml).find('image[id=' + i + ']'),
                    id = img.attr('id'),
                    url = img.find('url').text();
                    $('#loading'+i).html('<img src="'+url+'" onLoad="loadImages('+i+')" />').hide();
                    $('#loading'+i).fadeIn();
                }
            });
        }
Run Code Online (Sandbox Code Playgroud)

我有一种感觉,这可能是非常棘手的实现我如何设置它,我有一种感觉,我可能需要创建一个img对象,并等待加载???

一旦页面被缓存,加载显然工作正常,但它首先加载时有点痛苦,所以我需要解决这个问题.任何建议欢迎:)谢谢

ajax jquery image

5
推荐指数
1
解决办法
2087
查看次数

Javascript If语句,查看数组

心灵今天下午一片空白,不能为我的生活找到正确的方法:

if(i!="3" && i!="4" && i!="5" && i!="6" && i!="7" && i!="8" && i!="9" && i!="2" && i!="19" && i!="18" && i!="60" && i!="61" && i!="50" && i!="49" && i!="79" && i!="78" && i!="81" && i!="82" && i!="80" && i!="70" && i!="90" && i!="91" && i!="92" && i!="93" && i!="94"){

//do stuff

}
Run Code Online (Sandbox Code Playgroud)

所有这些数字都需要在数组中,然后我可以检查" i"是否不等于其中任何一个.

javascript if-statement

5
推荐指数
1
解决办法
4万
查看次数

WordPress 中的动态简码和函数

我在基于数据库条目自动生成短代码方面遇到了一些问题。

我能够得到正常的简码工作,即:

function route_sc5() {
        return "<div>Route 5</div>";
    }
    add_shortcode('route 5','route_sc');
Run Code Online (Sandbox Code Playgroud)

和以下激活它的短代码是[route 5]

这有效。但我需要的是为每个数据库条目生成的简码。就像是:

$routes = $wpdb->get_results( $wpdb->prepare("SELECT * FROM wp_routes") );
foreach($routes as $route)
{
    function route_sc$route->id () {
        return "<div>Route $route->id</div>";
    }
    add_shortcode('route $route->id','route_sc$route->id');
}
Run Code Online (Sandbox Code Playgroud)

上面只是我希望它如何工作的一个例子。不是字面上我正在使用的代码。我将如何实现这一目标?): 谢谢。

wordpress shortcode

2
推荐指数
1
解决办法
1万
查看次数

单击父级时的jQuery切换复选框

我编写了一个简单的js函数来打开/关闭复选框,然后单击父级(在本例中为TD).单击TD上的任意位置时,此功能可按预期工作.

但是,当您单击复选框本身时,没有任何反应.
我想知道的是为什么它这样做以及最好的解决方法是什么?

我有一个jsfiddle来演示这个.

这是我的js函数:

$("td.onoff").click(function() {
    var objCheckbox = $(this).find("input[type=checkbox]");
    if( objCheckbox.length >= 1 ) {
        objCheckbox.prop("checked", !objCheckbox.prop("checked"));
    }
});
Run Code Online (Sandbox Code Playgroud)

谢谢.

html checkbox jquery toggle prop

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

Wordpress数据库与自定义表

我试图从我导入到我的wordpress数据库的表中提取数据.

我的PHP代码适用于所有默认的wp_表,但是当我尝试并定位表时,我实际上想让我回到bug.

我的代码(目前回复所有帖子标题,它的工作原理)

$liveposts = $wpdb->get_results( $wpdb->prepare("SELECT * FROM $wpdb->posts
 WHERE post_status = 'publish'") );

 foreach ($liveposts as $livepost) {
  echo '<p>' .$livepost->post_title. '</p>';
}
Run Code Online (Sandbox Code Playgroud)

我从另一个数据库导入了3个表,是的,他们确实有数据要拔出.我发现$wpdb->posts期望post表是wp_posts ..所以我尝试将我的表重命名为wp_bus_route ...但仍然没有.

我使用phpMyAdmin从一个大型数据库(以.sql格式)导出3个表并导入它们.我可以在phpMyAdmin中查看表格并查看其中的所有数据.

这是我第一次从wp数据库中提取数据,所以我遗漏了一些明显的东西.

php database wordpress

0
推荐指数
1
解决办法
4854
查看次数