Lance angulaire "Erreur: Argument invalide." Dans IE
J'ai une directive qui prend de texte de l'élément et les lieux wbr éléments après chaque 10ème caractère. Je l'utilise par exemple sur les cellules d'un tableau avec un long texte (par exemple, les Url), afin de ne pas s'étendre sur la table. Code de la directive:
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)));
});
}
};
});
Fonctionne bien sauf dans IE (j'ai essayé IE8 et IE9), où il déclenche une erreur dans la console: Error: Invalid argument.
Ici est jsFiddleen cliquant sur le bouton, vous pouvez voir l'erreur dans la console.
Donc question évidente: pourquoi est là l'erreur, ce qui est la source de celui-ci, et pourquoi seulement dans IE?
(Question Bonus: comment puis-je faire IE outils de dev pour m'en dire plus sur l'erreur, comme la ligne de code source, parce qu'il m'a fallu un certain temps pour le localiser, Error: Invalid argument.
ne dit pas grand chose sur l'origine.)
P. S.: je sais que IE ne sait pas le rmb, mais ce n'est pas la question.
Edit: dans mon application j'ai ré-écrit la directive de ne pas regarder sur le texte de l'élément et de le modifier, mais plutôt à passer de la saisie de texte via l'attribut, et fonctionne maintenant correctement dans tous les navigateurs. Mais je suis toujours curieux de savoir pourquoi la solution d'origine est en donnant que l'erreur dans IE, commençant ainsi la générosité.
source d'informationauteur przno
Vous devez vous connecter pour publier un commentaire.
Votre tentative de créer une directive pour injecter des éléments de votre chaîne se heurte à un bogue connu dans IE traite
appendChild
méthode. J'ai été en mesure de reproduire votre erreur, c'est à dire avec votre violon, même après la suppression de la<div>
ajoutant complètement.Avis, que si vous supprimez votre
div
concaténation complètement, et de tenter de revenirnewText
dans une forme originale, vous obtenez toujoursTransclusion sur l'INTERFACE utilisateur affichage ne fonctionne pas sur IE9-10-11
Pas Angulaire de la réponse (et une vieille question, je sais), mais je suggère que vous pourriez prendre la mauvaise approche du problème. Plutôt insérer des pauses (qui serait la ruine de tout marquage dans la chaîne de caractères par exemple), il suffit d'utiliser le CSS text-overflow ou de débordement de la propriété.
Mon
"error invalid argument anonymous function call"
a été d'être jeté de me faire la suite sur le code ci-dessous.Erreur:
Pas D'Erreur: