相关:How can i rerender Pinterest's Pin It button?如何在使用pinterest“pin it”按钮时消除过多的HTTP请求?
的Pinterest的设计“别针把它”对their goodies page显示网站,按钮,呼唤一个网页设计师的特殊标记的锚标记插入到自己的网站页。然后该页面必须调用。
特殊的锚标签必须是这样的:
<a href="http://pinterest.com/pin/create/button/?
url=http%3A%2F%2Fpage%2Furl
&media=http%3A%2F%2Fimage%2Furl"
class="pin-it-button" count-layout="horizontal"></a>
和pinit.js样板必须是这样的,和最后针后一定要放在。
<script type="text/javascript" src="//assets.pinterest.com/js/pinit.js">
</script>
据我所知道的,什么pinit.js代码确实是这样的:
- 扫描锚标签页
- 查找的特殊标记,明确了“引脚它按钮“类和href前缀
- 替换具有重新格式化的IFRAME的定位标记。这些iframe的
src
属性获得标准化的URL,这些URL指向不同的服务器,而不是pinterest.com,而是来自CDN的pinterest使用的服务器。
这是罚款的静态网页,但:
- 它不动态页面,“用别针把它”按钮可能被动态地通过jQuery逻辑产生和注入的网页标记上工作对用户操作的响应。
- 它需要每个“pin it”按钮一个iframe,这意味着每个“pin it”按钮一个HTTP GET。如果您有10张照片,每张照片都带有一个pinit按钮,那么有10个HTTP GET可以帮助您获得CDN。所有这些GET都是用于名称相近的资源,但它们都稍有不同,基于要固定的图像的URL,因此无法缓存。
我想要做的是消除过多的GET。有任何想法吗?
我有一个想法是:
- 插入只有一个锚标记,样式为
display:none;
一个div内。 - 调用pinit.js,这会导致该锚标记的魔术替换以及加载新的iframe。它是无形的,因为它仍然存在于无形的div中。
- 运行一些额外的JS逻辑来检查生成的iframe的src属性的URL,保存pinterest CDN的主机名。
- ?
然后我可以生成pinterest CDN的“标准化”URL,但是......如果我简单地将它们用作iframe的src 我的逻辑生成,那么我有与过量GET相同的问题。我所做的全部都是连续调用pinit.js(无论如何都可以缓存)。
有没有人遇到过这个?
我不得不相信这个设计将会改变 - 它似乎不适合现在它的工作方式。
EDIT
我读elsewhere该Pinterest的提供了用于“PIN为”在页面上的按钮,适用于当有大量的“PIN它”按钮的“异步”的机制。不知道那是什么;我找不到它。
没有必要编辑Pinterest的JS。查看链接的问题和/或[this](http://porizi.wordpress.com/2013/11/07/dynamic-pinterest-button/) – Firsh 2014-02-10 00:57:59
如果您想避免使用JS,那么需要编辑JS我提到的竞争条件。但是,自从我回答这个问题以来,可能pinterest已经解决了这个问题。这很有可能。 – Cheeso 2014-02-19 02:14:01