最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - Angular.jsjQuery html string parsing in 1.9.1 vs. 1.8.3 - Stack Overflow

programmeradmin7浏览0评论

Trying to do angular.element(stringWithHtmlStructure); causes

Error: Syntax error, unrecognized expression: <div id="foo">bar</div>

in jquery 1.9.1, however it works in jquery 1.8.3

Is it an issue or a feature? Security one perhaps? How do I deal with it?

1.8.3 example 1.9.1 example

It's definitely not a problem with any of the angular stuff, doing $(stringWithHtmlStructure) fails just the same, as you can see here

Trying to do angular.element(stringWithHtmlStructure); causes

Error: Syntax error, unrecognized expression: <div id="foo">bar</div>

in jquery 1.9.1, however it works in jquery 1.8.3

Is it an issue or a feature? Security one perhaps? How do I deal with it?

1.8.3 example http://plnkr.co/edit/ZYYKIixcYzOL46hq0puS?p=preview 1.9.1 example http://plnkr.co/edit/ETmQMY8KoCP0gaKdSrMD?p=preview

It's definitely not a problem with any of the angular stuff, doing $(stringWithHtmlStructure) fails just the same, as you can see here http://plnkr.co/edit/FqvOKZ62t0IJ57cT05ew?p=preview

Share Improve this question edited Apr 20, 2013 at 15:55 fxck asked Apr 20, 2013 at 15:40 fxckfxck 4,9088 gold badges59 silver badges97 bronze badges 1
  • stackoverflow./questions/14817039/… could it be this? – fxck Commented Apr 20, 2013 at 15:42
Add a ment  | 

2 Answers 2

Reset to default 8

The problem is definitely with jquery 1.9.1

HTML strings with leading whitespace: jQuery 1.9 restricts the strings processed by $() for security reasons. Although we remend you use $.parseHTML() to process arbitrary HTML like templates, the 1.1.0 version of the Migrate plugin restores the old behavior.

way to deal with it is use any kind of trimming function, whether it's jquery's $.trim or underscores trim or even your own.

Note that this problem only occurs when trying to use template from $templateCache, if you use template or templateUrl attr on the directive it works fine, I guess angular internally trims it.

If your string contains leading spaces you should remove them.

This should work:

angular.element($.trim(stringWithHtmlStructure));
发布评论

评论列表(0)

  1. 暂无评论