我的问题是,在我的ajax回调中,当我将查询的上下文设置为ajax调用返回的html时,它找不到任何元素。
一些发现:
- 该问题在 Firefox 中从未出现
- 只有当以具有一定权限的用户身份登录 SharePoint 时,才会在 IE 中出现此问题,从而导致生成某些额外的 html 以方便管理功能。我得出的结论是,正是这个额外的 html 导致了问题。
不幸的是,我无法控制生成的 html,因为它是由 SharePoint 生成的。
我已经隔离了问题并创建了 a simple test page供您查看。
最佳答案
问题在于 jQuery 如何实例化传递给它的 html,可能缺乏良好的跨浏览器字符串到 dom 解析技术(例如 Mozilla 上的 createContextualFragment)。
具体来说,jQuery 的 clean 函数中有两个正则表达式需要修复:
857: var match = /^<(\w+)\s*\/?>$/.exec(elems[0]);
874: elem = elem.replace(/(<(\w+)[^>]*?)\/>/g, function(all, front, tag){
这两种方法都无法处理名称中带有冒号的标签。
修复:
857: var match = /^<([\w:]+)\s*\/?>$/.exec(elems[0]);
874: elem = elem.replace(/(<([\w:]+)[^>]*?)\/>/g, function(all, front, tag){
关于jquery 无法在 IE 中使用 ajax 响应作为上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1548701/