我有一个指令,它使用元素的文本,并在每10个字符之后放置
wbr个元素.我在例如使用长文本(例如URL)的表格单元格上使用它,因此它不会跨越表格.指令代码:
myApp.directive('myWbr',function ($interpolate) { return { restrict: 'A',link: function (scope,element,attrs) { // get the interpolated text of HTML element var expression = $interpolate(element.text()); // get new text,which has <wbr> element on every 10th position var addWbr = function (inputText) { var newText = ''; for (var i = 0; i < inputText.length; i++) { if ((i !== 0) && (i % 10 === 0)) newText += '<wbr>'; // no end tag newText += inputText[i]; } return newText; }; scope.$watch(function (scope) { // replace element's content with the new one,which contains <wbr>s element.html(addWbr(expression(scope))); }); } }; });
工作正常,除了在IE(我已经尝试过IE8和IE9),它向控制台发出错误:错误:参数无效.
这是jsFiddle,当点击按钮时,您可以在控制台中看到错误.
那么明显的问题:为什么错误在那里,它的来源是什么,为什么只有在IE?
(奖金问题:如何让IE开发工具向我提供更多关于错误的信息,像源代码一样,因为花了我一些时间找到它,错误:无效的参数,并不能说明原因.)
P.S .:我知道IE根本不知道wbr,但这不是问题.
编辑:在我的实际应用程序中,我重新编写了这个指令,以便不查看元素的文本并进行修改,而是通过属性传递输入文本,并且在所有浏览器中都可以正常工作.但是我仍然很好奇为什么原来的解决方案是在IE中给出这个错误,从而开始了赏金.