NS_ERROR_XPC_BAD_CONVERT_JS:无法转换JavaScript参数arg 0 [nsIDOMWindow.getComputedStyle](Followup)
好吧,我终于弄清楚我的代码的哪个部分导致异常。您可以阅读初始文章here.初始文章中的代码缺少实际引起异常的部分(手动订阅viewPortData
可观测)。显然,我做错了某种方式...这里是代码:NS_ERROR_XPC_BAD_CONVERT_JS:无法转换JavaScript参数arg 0 [nsIDOMWindow.getComputedStyle](Followup)
self.viewPortData = ko.observable();
self.viewPortData.subscribe(function (newValue) {
var viewPort = $('#metro-view-port');
if (viewPort && newValue) {
self.fadeInOut(viewPort, newValue);
}
});
self.fadeInOut = function (domObject, newContent) {
if (newContent) {
var currentContent = domObject.html();
if (currentContent) {
var wrappedContent = $(currentContent);
wrappedContent.fadeOut(400, function() {
wrappedContent.empty();
domObject.html(newContent).hide().fadeIn(400);
});
} else {
domObject.html(newContent).hide().fadeIn(400);
}
}
};
那么我哪里出错了?
我创建了一个fiddle使用您的代码从这篇文章和以前的帖子,它的工作原理应该如此。
但是,我只返回一个简单的<div>
标记来填充metro-view-port
<div>
的HTML。
我最好的猜测是你回来的HTML是问题。
我给你的建议是首先通过减少HTML返回到一个非常简单的东西来确认,然后逐渐重新引入预期的代码,直到你发现问题。
这个错误是在旧版本的jQuery。尝试将.hide()更改为.css('display','none')
将您的fadeIn(400)翻转到show()。
jQuery更简单的做数学....我认为它不能得到元素的计算风格,因为它里面的浮点数或某些东西。
我有同样的问题.....但经过一些研究后,我到了这里(DAMMET我失去了选项卡 - 这是一个jQuery的错误报告),并意识到需要修复它。
在我的代码我换出淡入()来显示(),所以它不与动画做
你会想到,如果没有动画的问题不会是普遍的两种 - 但它是。
尝试了slideDown(0,如果你仍然是一个动画后,可能无法正常工作,但它的价值弹出。
发生在我身上的同样的错误。因为HTML对其有意见的问题引起的。喜欢的东西:
<!-- Some Comment goes here -->
<div>
...
</div>
为了解决这个问题,在不改变HTML,你需要用别的东西的HTML,所以你只有一个元素传递给jQuery的:
var div = document.createElement('div');
div.innerHTML = nativeHtml;
var $html = $(div);
雅直到this jQuery bug,问题可能与HTML中的换行符和空白文本节点有关。就我而言,我正在一个模板,像这样的:
<script id="myTemplate" type="text/template">
<div>
<h2>Important stuff</h2>
</div>
</script>
而像这样分析它:
var currentContent = $.parseHTML($('#myTemplate').html());
所以我结束了与代表换行和空白字符在一堆文本节点原始的HTML模板。可能有类似的事情发生在你身上。
为了解决这个问题,我剥离出来的新行和空格,像这样:
$('#myTemplate').html().replace(/\n/g, '').replace(/>\s+</g, '><').trim();
希望帮助别人!
证实 - 当我从要附加的代码中移除html注释时,错误消失了。 – zergussino