我注意到Kik共享按钮具有data-url属性,甚至the documentation甚至具有支持URL的共享按钮构建器,但是在我的测试中,data-url属性被忽略,而是始终共享当前URL 。

这是一个例子:

<a class="kik-button kik-color-lg"
   data-url="http://example.com/something"
   data-title="Something"
   data-description="Something"
   data-pic="http://example.com/example.png">
</a>


如果您在页面http://example.com上-按下共享按钮将共享一张卡,将您带到http://example.com而不是http://example.com/something

我还注意到,在本地使用kik.send时,实际上没有任何“ url”项,这使我对实际上应该发送的内容感到困惑。

另一个与半相关的问题是,我试图在非kik设备上隐藏“共享”按钮,因此它们仍然可以正常使用该网站,但是kik.enabled仅在用户首次加载该页面时才为true。他们导航到另一个页面,kik.enabled突然为假,导致共享按钮消失。为什么是这样?

(注意:kik.enabled在Chrome中使用Kik开发人员工具,@ kik开发者时效果很好,我真的希望开发人员工具更接近Kik应用程序,我已经构建了一些应用程序,通常它们在我的浏览器中都能正常工作使用Kik工具,但在Kik本身中完全被破坏了)

最佳答案

the kik-share-button script尝试将data-url的值作为url参数发送到kik.send()

function setupShareButton(link) {
    link.style.display = "inline-block";
    link.setAttribute("title", "Share this on Kik!");
    link.addEventListener("click", function(event) {
        var link = this,
            data = {},
            n, m, i, h;
        n = link.getAttribute("data-title");
        if (n) {
            data.title = n
        } else {
            data.title = document.title
        }
        m = link.getAttribute("data-description");
        if (m) {
            data.text = m
        }
        i = link.getAttribute("data-pic");
        if (i) {
            data.pic = i
        }
        h = link.getAttribute("data-url");
        if (h) {
            data.url = h
        }
        kik.send(data);
        // don't follow the link normally unless a previous command threw an error
        return false
    })
}


但是kik.send()文档没有提到url参数。共享按钮脚本中可能存在错误。参数名称无效可能会导致默认行为,即发送当前页面的url。也许它是data参数的一部分:

kik.send({
  title: '...',
  text: '...',
  data: {url: '...'}
})


在这种情况下,只需对共享按钮脚本进行少量修改即可产生正确的功能。

09-10 17:47