令人头疼的范围问题

时间:2015-06-07 21:40:48

标签: javascript joomla scope include

像这样的小事让我发疯!

使用典型的Joomla网站及其复杂性。

从功能正常的网站开始。编辑模板的特定javascript文件以添加简单的函数:

   function socialShare(title, url) {
    alert("goop!");
  }

我在链接中引用它:

<a class="icon-facebook" 
     onclick="socialShare('blog-entries', '11-blog-article/15-oppressive-tyranny&title=Triumph Over Tyranny')"> </a>

该函数与37个其他外部脚本一起包含在页面末尾的文件中,包含在body元素中,如下所示:

<script src="/bts/templates/vg_progressive/js/articleRev.js"></script>

我插入了sociaShare函数定义作为include articleRev.js文件中的第一件事。外部脚本列表包括bootstrap,jquery等核心功能。

我可以使用firebug的调试器和放大器在包含的脚本文件中看到该功能。底部附近的页面源中的包含行。但它没有得到执行!!如果我在页面的任何位置包含完全相同的函数,它就可以正常工作。由于某种原因,外部脚本文件中的实例不在该页面/文章的范围内,因此我可以在页面源中清楚地看到它。

我也可以将函数放在脚本标记中作为正文中的最后一个东西,它在范围内并且工作正常。我发现我可以在一个不同的包含 javascript文件中定义该函数,该文件位于同一个文件夹中,它也可以正常工作。

就像我说的,这样的事情让我把头发拉出来!什么可以导致这种行为?我怎样才能缩小范围呢?

根据Ed Cotrel的说法,这里有两个文件[可能]有用,我不这么认为。将articleRev.txt重命名为.js,将pageSrc.txt重命名为pageSrc.html。至于你的评论Ed,我相信我已经尽可能清楚地说明了这个问题。

所需的行为是在单击锚标记时看到警告框。简单。锚标记基于其中一个类定义显示社交媒体图标。 onclick属性应该调用javascript函数socialShare并显示一个警告框,其中包含带有2个参数的文本消息。警报永远不会出现。如果将socialSharing功能移动到位于同一文件夹中的main.js脚本文件,并以相同的方式包含在页面流中的相同位置,则它可以正常工作。那更清楚吗?

1)http://thecomingbitsharesrevolution.website/media/articleRev.txt 2)http://thecomingbitsharesrevolution.website/media/pageSrc.txt

0 个答案:

没有答案
相关问题