0

问题可以在这个页面看到:http: //ignitingthesixthsense.com/pre-launch-1

问题在于名为 Social Discount Press 的插件。此插件的目的是提示用户通过社交媒体分享您的网页,如果他们这样做,则会出现一个链接,让他们可以访问受限内容。

实际上有两个问题,但我不确定它们是否源于同一个问题。

1)第一个问题是我使用这个简码在页面上放置了两次社交分享按钮:

[social_sharing_discount index="2"]

并且共享按钮的第二个实例(朝向页面底部)无法正常工作。Facebook 和 Twitter 按钮在单击时会激活共享框,但在共享后,“即时访问”按钮不会像应有的那样出现在共享按钮下方。谷歌按钮在点击时什么都不做。我发现如果我删除共享按钮的第一个实例(在页面顶部),那么它们的第二个实例开始工作,所以换句话说,如果页面上有一个实例,它似乎才能正常工作一次。

2)第二个小得多的问题是,当点击 Google 分享按钮时,访问按钮出现在该人实际分享之前。

非常感谢您对此提供帮助。

4

1 回答 1

0

我发现问题的主要原因是插件主要建立在 ID 上,这些 ID 需要在整个页面中是唯一的。并且具有相同 ID 的多个实例会导致许多错误。

解决方案是重写一些 php 和 js 以使用类而不是 ID。这允许插件的两个实例在同一页面上工作,从而解决了第一个问题。

google 之所以这么不准确,是因为作者只是在一个弹窗中打开了一个弹窗到 google 分享页面,这并不能让我们看到分享时等 JS 事件。

另一方面,由于 twitter 和 facebook jssdk 已加载到页面中,我们知道其中任何一个已被共享的确切时间,因此可以准确地显示即时访问按钮。

因此,插件的作者只是在猜测用户何时可能共享。在这种情况下,作者猜测当 javascript onunload 事件触发时,逻辑上用户已在 google 上共享。现在可以通过多种方式触发 onunload 事件,一种是当用户关闭弹出窗口时,即用户是否共享的最佳猜测场景。然而,当表单失去焦点、用户导航或单击链接时,也会触发 onunload 事件。

此外,仅在 IE、FF 和 Safari 中正确支持 onunload 事件,而不是 Chrome 和 Opera。最终在不同的浏览器中给出了不同的行为。

所有这些都可能导致不可预测的行为,例如您所注意到的。

一个更好的解决方案是让 google 为 google plus 共享提供一个 jssdk,让我们动态创建一个共享框,但它目前还缺乏该功能。

于 2013-07-25T16:57:04.230 回答