在我包含bootstrap.js之后
<script type="text/javascript" src="/js/bootstrap/js/bootstrap.js"></script>
我在控制台中收到以下错误:未捕获的TypeError:无法读取null的属性'documentElement'
靴子折叠工作正常,但控制台收到该错误的垃圾邮件。我在引导程序之前包含了jquery。
其他人以前有这个问题吗?
编辑:
Tooltip.prototype.show = function () {
var e = $.Event('show.bs.' + this.type)
if (this.hasContent() && this.enabled) {
this.$element.trigger(e)
var inDom = $.contains(this.$element[0].ownerDocument.documentElement, this.$element[0])
if (e.isDefaultPrevented() || !inDom) return
var that = this
这是bootstrap.js脚本的片段。似乎错误总是出现在documentElement部分的var inDom行中的工具提示函数中
您很可能仍在使用另一个工具提示库(例如JQueryUI / Tooltip),或者您试图将工具提示直接附加到文档元素。请检查您的代码,例如:
$(document).tooltip
或类似的东西,然后将其删除以使一切恢复正常。确保复查您可能已经拥有的所有其他.tooltip()调用,因为它们很可能不再起作用:您需要手动将它们移植到Bootstrap才能使它们再次起作用。
如果要同时保留Bootstrap / Tooltip和JQueryUI / Tooltip(假设是您的情况),则可以使用$ .widget.bridge来手动更改JQueryUI工具提示插件名称:
// Change JQueryUI/tooltip plugin name to 'uitooltip' to fix name collision with Bootstrap/tooltip
$.widget.bridge('uitooltip', $.ui.tooltip);
在导入JQueryUI js文件之后,在导入Bootstrap js文件之前,您需要执行以下操作:在执行此操作时,我还建议您对button / uibutton进行相同的操作以解决完全相同的问题。结果代码如下所示:
<script type="text/javascript" src="path/to/jqueryui.js" />
<script type="text/javascript">
// Change JQueryUI plugin names to fix name collision with Bootstrap:
$.widget.bridge('uitooltip', $.ui.tooltip);
$.widget.bridge('uibutton', $.ui.button);
</script>
<script type="text/javascript" src="path/to/bootstrap.js" />
然后,您只需将$(document).tooltip调用重新路由到$(document).uitooltip,即可使所有工作正常进行。
另外,如果您找不到令人讨厌的js代码和/或不想使用$ .widget.brige,则可以随时手动修补bootstrap.js以避免此类错误。这可以通过替换以下行(bs 3.3.1中的#1384)来完成:
var inDom = $.contains(this.$element[0].ownerDocument.documentElement, this.$element[0])
用这一行:
var inDom = $.contains((this.$element[0].ownerDocument || this.$element[0]).documentElement, this.$element[0])
请记住,在代码中的某个地方,您仍然会有一个坏的.tooltip()调用。
也可以看看:
http://www.ryadel.com/2015/01/03/using-jquery-ui-bootstrap-togheter-web-page/(我在博客上写的一篇文章,目的是为了更好地说明问题)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句