1

我是 JavaScript 的新手,正在帮助一个朋友维护他的网站。唯一我不知道他的 index.html 页面在做什么围绕着这段 JavaScript 代码。我在下面有几个问题。

<script type="text/javascript">
function reRenderPin() {
    for (var n in window) {
        if ( n.indexOf('PIN_') == 0 && $("a[data-pin-do]").length > 0)  {
            $("a[data-pin-do]").attr("id", "pinbutton");
            var element = document.getElementById('pinbutton');
            window[n].f.render.buttonBookmark( element );
        }
    }
}

$(document).ready(function(){    
    reRenderPin();
});

$(document).bind("projectLoadComplete", function(e, pid) {
    reRenderPin();
});

</script>

<script type="text/javascript" src="//assets.pinterest.com/js/pinit.js"></script>

我对此进行了搜索,但没有一个答案对我来说很清楚。

我知道这与 Pinterest 有关,并且我知道 reRenderPin() 函数在“文档准备就绪”时间和“projectLoadComplete”时间被调用。

我的问题是:

  1. reRenderPin() 函数在做什么?

  2. projectLoadComplete 事件何时发生?我对此进行了搜索,关于它的信息很少,而且我不清楚。

  3. 我注意到该函数使用“$”函数。我知道这是一个 JQuery 函数,但我对 JQuery 函数的理解是,如果你使用它们,你必须在你的 html 中有一个指向代码库的链接。页面上唯一的 .js 库是指向 pinterest 资产的库 - 请参阅代码。这个“$”函数如何在没有库的情况下工作?

任何帮助将不胜感激?

问候,
安吉洛

4

1 回答 1

0

该脚本似乎是一个 pinterest pin 按钮脚本。

可能由您使用的 CMS 或模板插入

1) 脚本可能会在需要时插入 jQuery

2) 代码在窗口范围内查找以 PIN_ 开头的变量,并查找与 data-pin-do 和匹配函数 window["pin_something"].f 的链接。

3) projectLoadComplete 由另一个脚本触发,触发时调用 reRender - 似乎这与名为 cargo 的平台有关 - http://support.cargocollective.com/customer/portal/articles/708669-adding-a-pinterest -小部件

于 2013-10-09T12:51:15.983 回答