首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mootools突破Panoramio Javascript API

Mootools突破Panoramio Javascript API
EN

Stack Overflow用户
提问于 2012-12-08 20:28:36
回答 2查看 176关注 0票数 2

我正在尝试使用Panoramio的JavaScript应用程序接口,但在使用MooTools框架时无法显示。在this jsFiddle上使用Chrome的inspect功能会在包含的JavaScript中显示以下错误:

代码语言: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应用程序接口本身的限制?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-12-08 20:44:28

MooTools向Array.prototype添加了一堆函数,但不会阻止它们被枚举。这意味着它们出现在数组上的for-in循环中。

由于错误消息包含MooTools添加的associate函数的源代码,因此似乎Panoramio JavaScript正在阵列上使用for..in,而不允许这样做:

代码语言:javascript
复制
// (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,这些调用可能会失败,因为如果它们在一个地方(初始化)犯了错误,它们可能也会在其他地方犯错误。

票数 2
EN

Stack Overflow用户

发布于 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节目中显示出来。

代码语言:javascript
复制
<div dir="ltr" style="text-align: center;" trbidi="on">
<script src="https://ssl.panoramio.com/wapi/wapi.js?v=1&amp;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>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13777485

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档