我有大量的javascript代码,并通过你的blockUI.js阻止解锁阻止用户界面(http://malsup.com/jquery/block/)
我得到“无法读取属性'parentNode”未定义的“异常随机。
似乎我的代码中的阻塞/解除阻塞序列已经不同步了。因为有多个html模板,它可能会阻塞两次并解锁一次,反之亦然。我很难分析所有代码并修复订单。
我能够产生一个问题的小提琴。有人可以看看并建议快速解决?
http://jsfiddle.net/pareshvarde/D8KW4/
<script type="text/javascript">
$(function () {
$("#blockButton").click(function () {
myBlock($('#blockSection'));
});
window.setInterval(function () {
myBlock();
myBlock($('#blockSection'));
window.setTimeout(function () {
myUnblock();
myUnblock($('#blockSection'));
}, 5000)
}, 2000);
$("#unBlockButton").click(function () {
myUnblock($('#blockSection'));
});
});
myBlock = function (surroundingControl, message) {
console.log('blocking');
if (message)
$("#loader h4").text(message);
else
$("#loader h4").text('Loading...');
if (surroundingControl)
surroundingControl.block({ message: $('#loader'), baseZ: 1200 });
else {
$.blockUI.defaults.message = $('#loader');
$.blockUI.defaults.baseZ = 1200;
$.blockUI.apply();
}
};
myUnblock = function (surroundingControl) {
console.log('unblocking');
if (surroundingControl)
surroundingControl.unblock();
else
$.unblockUI.apply();
};
</script>
答案 0 :(得分:2)
好的,我终于解决了这个问题。基本上我创建了一个动态元素,并将我的加载器的内容放入该div中并将其用于阻塞。
我的upBated myBlock功能如下:
myBlock = function (surroundingControl, message) {
console.log('blocking');
if (message)
$("#loader h4").text(message);
else
$("#loader h4").text('Loading...');
var messageContent = document.createElement('div');
if ($('#loader') !== undefined)
$(messageContent).html($('#loader').html());
else
$(messageContent).html("Loading....");
if (surroundingControl)
surroundingControl.block({ message: messageContent, baseZ: 1200 });
else {
$.blockUI.defaults.message = messageContent;
$.blockUI.defaults.baseZ = 1200;
$.blockUI.apply();
}
};
答案 1 :(得分:2)
通常会出现此问题,因为它找不到“message”属性中指定的DOM元素或者根本没有指定message属性,在这种情况下,您需要确保$('#loader')
返回一个元素。
提示:如果您只是需要阻止而不显示任何内容或加载图片,您甚至可以传递message: null
。
答案 2 :(得分:0)
对我来说,这样做是为了放置一些文本,而不是从html元素中加载文本。
之前:
CREATE TABLE [dbo].[Sale_Target](
[id] [numeric](8, 0) NOT NULL,
[Salevalue] [numeric](8, 0) NULL,
[Salestring] [varchar](20) NULL,
[Date] [Datetime2](7) NULL
) ON [PRIMARY]
CREATE NONCLUSTERED COLUMNSTORE INDEX "NCCI_Sale_Target"
ON [dbo].[Sale_Target] (id,Date)
CREATE TABLE [dbo].[Sale_Source](
[id] [numeric](8, 0) NOT NULL,
[Salevalue] [numeric](8, 0) NULL,
[Salestring] [varchar](20) NULL,
[Date] [Datetime2](7) NULL
) ON [PRIMARY]
CREATE NONCLUSTERED COLUMNSTORE INDEX "NCCI_Sale_Source"
ON [dbo].[Sale_Target] (id,Date)
之后
$.blockUI({
css: {
border: 'none',
padding: '15px',
backgroundColor: '#000',
'-webkit-border-radius': '15px',
'-moz-border-radius': '15px',
opacity: 1,
color: '#fff'
}, message: $('#loadingMessage')
});
这样,就可以了,结果也一样!