我正在尝试使用Panoramio的JavaScript应用程序接口,但在使用MooTools框架时无法显示。在this jsFiddle上使用Chrome的inspect功能会在包含的JavaScript中显示以下错误:
Uncaught SyntaxError: Invalid regular expression: /function (keys){
var obj = {}, length = Math.min(this.length, keys.length);
for (var i = 0; i < length; i++) obj[keys[i]] = this[i];
return obj;
}/: Nothing to repeat我尝试使用API的站点是Joomla2.5站点,因此使用了MooTools框架。将小提琴上的框架更改为jQuery或将其完全删除会生成图片,并且不会出现错误。
我曾尝试以某种方式整合jQuery的noConflict()函数,并为MooTools搜索过类似的函数,但都没有成功。
任何解决这个问题的建议都是非常受欢迎的。或者这是Panoramio的JavaScript应用程序接口本身的限制?
发布于 2012-12-08 20:44:28
MooTools向Array.prototype添加了一堆函数,但不会阻止它们被枚举。这意味着它们出现在数组上的for-in循环中。
由于错误消息包含MooTools添加的associate函数的源代码,因此似乎Panoramio JavaScript正在阵列上使用for..in,而不允许这样做:
// (Result of `String(Array.prototype.associate)` when MooTools is loaded
function (keys){
var obj = {}, length = Math.min(this.length, keys.length);
for (var i = 0; i < length; i++) obj[keys[i]] = this[i];
return obj;
}这是Panoramio脚本中的一个错误,在没有正确的保护措施的情况下,永远不要使用 for..in在数组上循环。请参阅 (来自我的博客)。如果您可以获得Panoramio脚本的未压缩版本,则可能可以修复相关的循环。
有些人还会争辩说,在Array.prototype中添加可枚举属性是MooTools的一个错误(或者至少是一个糟糕的设计决策)。
Dimitar Christoff在评论中注意到了(谢谢迪米塔!)如果您在加载MooTools之后加载Panoramio脚本,它可以工作:http://jsfiddle.net/DEWvZ/2/,但要注意,如果您稍后对Panoramio进行任何调用,一旦加载了MooTools,这些调用可能会失败,因为如果它们在一个地方(初始化)犯了错误,它们可能也会在其他地方犯错误。
发布于 2013-10-21 16:35:09
此Panoramio JavaScript应用编程接口小部件。
另一种类型的Panoramio JavaScript API小部件,您还可以使用example and code is here更改背景颜色。
我已经创建了一个blogspot page,其中我已经创建了许多Panoramio JavaScript和HTML API小部件。
我在我的博客show website.its作品中使用了它,它不会在发布后的mood.It节目中显示出来。
<div dir="ltr" style="text-align: center;" trbidi="on">
<script src="https://ssl.panoramio.com/wapi/wapi.js?v=1&hl=en"></script>
<div id="wapiblock" style="float: right; margin: 10px 15px"></div>
<script type="text/javascript">
var myRequest = {
'tag': 'kahna',
'rect': {'sw': {'lat': -30, 'lng': 10.5}, 'ne': {'lat': 50.5, 'lng': 30}}
};
var myOptions = {
'width': 300,
'height': 200
};
var wapiblock = document.getElementById('wapiblock');
var photo_widget = new panoramio.PhotoWidget('wapiblock', myRequest, myOptions);
photo_widget.setPosition(0);
</script>
</div>https://stackoverflow.com/questions/13777485
复制相似问题