StumbleUpon 发布了一个Widget 脚本,并记录了如何使用它来将 stumbleUpon 按钮(他们称之为徽章)插入网站。
您可以使用他们的在线工具为按钮生成标记。它看起来像这样:
<!-- Place this tag where you want the su badge to render -->
<su:badge layout="2" location="http://example.com"></su:badge>
<!-- Place this snippet wherever appropriate -->
<script type="text/javascript">
(function() {
var li = document.createElement('script');
li.type = 'text/javascript';
li.async = true;
li.src = 'https://platform.stumbleupon.com/1/widgets.js';
var s = document.getElementsByTagName('script')[0];
s.parentNode.insertBefore(li, s);
})();
</script>
该脚本元素只是延迟加载 widgets.js 事物的一种方式。仅从外观来看,我认为它可以通过扫描文档中的<su:badge>
元素并将它们替换为iframes
. 然后 iframe 本身从 stumbleupon 获取源内容,网址如下:http://badge.stumbleupon.com/badge/embed/4/?url=http%3A%2F%2Fexample.com
.
iframe 在视觉上呈现如下:
stumbleupon 按钮是第二个。我展示其他的进行比较。如您所见,StumbleUpon 渲染看起来与所有其他人不同。SU 使他们的按钮看起来像一个“徽章”,而所有其他社交分享小部件看起来像......呃....一个按钮。
我正在尝试使 Stumbleupon 小部件看起来像一个按钮。我很确定这是可能的。例如, mashable 就是这样做的(例子)。这是它的样子:
如您所见,stumbleupon 按钮看起来像一个按钮。这不是徽章。Mashable 没有使用这个su:badge
东西——他们已经渲染了自己的<a>
标签,并对其进行了样式设置。
视觉渲染不是问题;我可以弄清楚如何使跨度看起来像一个按钮,没问题。当我单击标签或跨度时会出现问题。在我看来,使用 StumbleUpon 使用的 iframe-thing,它会调用此 URL 来提交一个页面以供共享:
http://www.stumbleupon.com/badge/?url=http%3A//example.com/whatever HTTP/1.1
iframe 使用 javascriptwindow.open
来请求,并限制调整大小等。这就是它在 mashable 上的工作方式。生成的窗口如下所示:
这也是可混搭页面所做的,尽管它不使用 iframe。Mashable 页面包含的 javascript 只是直接从主 mashable 页面中打开“stumbleupon submit”窗口。
但是当我从我的页面尝试同样的事情时,固定的小窗口从 StumbleUpon 获得 302 重定向,然后是另一个 302,最终将其指向
...不允许共享链接。
这是一个很长的故事,但是:
有没有人知道如何说服 StumbleUpon 让我通过 iframe 中未包含的按钮共享链接或 URL?
mashable 的秘密是什么?