- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我的 JavaScript 应用程序使用 Facebook Connect 来显示用户 friend 的个人资料图片。
在 Facebook 端的最新更新在 Safari 中创建错误之前,这一切都很好。
基本上,除非用户 friend 的名字中有撇号(单引号),否则一切正常。例如,想一想像 O'Connor 这样的爱尔兰姓氏。撇号完全破坏了所有个人资料图片的渲染,而只显示剪影。
通常在渲染 fb:profile-pics 时, friend 的名字会成为图像的 alt 和 title 属性的值。但是,如果名称带有撇号,则会发生这种情况(在本例中使用名称 Gregory O'Connor):
<fb:profile-pic class=" FB_profile_pic_rendered FB_ElementReady">
<!-- Notice the strange new "connor" attribute -->
<img class=" FB_profile_pic fb_profile_pic_rendered " style="" connor="" title="Gregory O" alt="Gregory O" src="http://profile.ak.fbcdn.net/path/to/friends/profile/image.jpg">
<fb:profile-pic>
对我来说幸运的是,我的代码几乎与 Facebook 为 FB.ApiClient.friends_get 函数示例提供的代码相同,可以在此处找到(如果 friend 的名字中有撇号,将重现 Safari 错误).
发件人:http://developers.facebook.com/docs/?u=facebook.jslib.FB.ApiClient.friends_get
<div id="profile_pics"></div>
<script type="text/javascript">
var widget_div = document.getElementById("profile_pics");
FB.ensureInit(function () {
FB.Facebook.apiClient.friends_get(null, function(result) {
var markup = "";
var num_friends = result ? Math.min(10, result.length) : 0;
if (num_friends > 0) {
for (var i=0; i<num_friends; i++) {
markup +=
'<fb:profile-pic size="square" uid="'
+ result[i]
+ '" facebook-logo="true">'
+ ' </fb:profile-pic>';
}
}
widget_div.innerHTML = markup;
FB.XFBML.Host.parseDomElement(widget_div);
});
});
</script>
由于 Facebook 一直对这个错误保持沉默,我需要在我们这边想出一个修复方法。我开始尝试去掉撇号(由于 Facebook 和我们的应用程序之间的通信和抽象层,它变得非常丑陋),并决定我应该退后一步,在这里征求有关如何解决这个问题的建议。
非常感谢。
编辑
我想通过调用 Facebook 生成的 HTML 的真实示例来澄清。本质上,上述 JavaScript 将从对上述结果的调用中获取用户 ID,并从该结果生成图像的 HTML。
我相信转义 img alt 和 img title 的结果会修复这个错误,但如何访问它的问题对我来说仍然存在。
例子:
<fb:profile-pic class=" FB_profile_pic fb_profile_pic_rendered FB_ElementReady" facebook-logo="false" linked="false" uid="6841956" size="normal">
<img class=" FB_profile_pic fb_profile_pic_rendered" style="opacity: 1;" connor="" title="Colin O" alt="Colin O" src="http://profile.ak.fbcdn.net/v227/676/36/n6841956_271.jpg">
</fb:profile-pic>
再次感谢!
最佳答案
与 F3 的答案相关,但不是尝试对整个结果进行编码(请参阅以下链接以了解差异:http://xkr.us/articles/javascript/encode-compare/)是否可以只编码(或删除)单引号?
result[i].replace(/'/g,"%27")
或者,此正则表达式模式应匹配 ' 字符的所有实例
"/'[^']*+'/"
像 Robert 一样,如果您能提供一个返回内容的示例,那将大有帮助。
关于javascript - 解决 friend 名字中单引号的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2194850/
在线编写 yacc 代码的教程使用单引号表示分号和其他字符: ';' '+' '-' (etc) 但是在使用时: '' 在我将其更改为双引号之前,我遇到了错误: "" 相似地, '>=' '==
MySQL documentation说它应该是\'。然而,scite 和 mysql 都显示 '' 有效。我看到了,它有效。我该怎么办? 最佳答案 您引用的 MySQL 文档实际上比您提到的要多一些
MySQL documentation说它应该是\'。然而,scite 和 mysql 都显示 '' 有效。我看到了,它有效。我该怎么办? 最佳答案 您引用的 MySQL 文档实际上比您提到的要多一些
MySQL documentation说它应该是\'。然而,scite 和 mysql 都显示 '' 有效。我看到了,它有效。我该怎么办? 最佳答案 您引用的 MySQL 文档实际上比您提到的要多一些
MySQL documentation说它应该是\'。然而,scite 和 mysql 都显示 '' 有效。我看到了,它有效。我该怎么办? 最佳答案 您引用的 MySQL 文档实际上比您提到的要多一些
我一直在使用 SED (Bash shell) 转义单引号问题。 我需要做 $cfg['Servers'][$i]['password'] = ''; 进入 $cfg['Servers'][$i]['
需要将'替换为\'但这就是我得到的: >>> s = "It's nice to have an example" >>> s.replace("'", "\\'") "It\\'s nice to
我在处理连接字符串中的 ' 字符时遇到问题。 Entity Framework 抛出异常说: Format of the initialization string does not conform
我遇到了一个非常奇怪的问题,我无法设置 Content-Security-Policy 所需的单引号。我假设我运行的是旧版本的 ingress,它仅在我禁用并重新启用它 (microk8s) 后才得到
插入带有撇号的值的正确 SQL 语法是什么? Insert into Person (First, Last) Values 'Joe', 'O'Brien' 我不断收到错误,因为我认为
我有三列数据 selector label option list time you personally
我使用 Java Pattern 类将正则表达式指定为字符串。 举个例子我喜欢成为蜘蛛侠:“彼得·帕克” 应将蜘蛛侠和“Peter Parker”列为单独的标记。谢谢 try { Buffe
我正在尝试删除标记 ' (单引号)但我不知道如何。 我在做delm \'但它不起作用。我也尝试了我能想到的所有组合。 我意识到这更像是一个 Vim 脚本问题,但我在任何地方都找不到。 最佳答案 为什么
如何禁用红色突出显示的特定实例。 我尝试在单引号前输入转义符,但没有成功。我确信单引号导致了红色突出显示,因为当我删除它时,它就会消失。 代码如下: import React from 'react'
我需要输出单引号 (')。它必须是单引号而不是 ',因为这是用于向 jquery 函数提供数据的字符串的一部分。 我使用 C# 循环遍历一个对象来构建一个字符串 "var data = [['Item
我正在尝试: "l'ape"); ?> var my_javascript_object = jQuery.parseJSON(''); 我收到此错误“未捕获的语法错误:意外的标识符”。问题是
我的问题是关于传递给方法验证的“add\”反斜杠单引号,该反斜杠单代码有什么用? document.writeln('\',\'N\'))>'); 最佳答案 欢迎来到堆栈溢出。 反斜杠告诉代码这不是引
我要执行命令: xcodebuild -exportArchive -exportFormat IPA -archivePath myApp.xcarchive -exportPath myApp.i
我有一个字符串,里面有一个 ': example link text 不幸的是,这似乎不起作用。 Firebug 提示“SyntaxError:参数列表后缺少 )”,您可以看到 HTML 实体已被 '
据我所知,'mars%22%3A%22' 和 "mars%22%3A%22" 是等效的,因为没有任何内容被转义. 我创建 javscript 书签已经有一段时间了。有一次,当按原样粘贴到 Chrome
我是一名优秀的程序员,十分优秀!