首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Twitter意图弹出两次

问Twitter意图弹出两次
EN

Stack Overflow用户
提问于 2015-07-24 11:31:16
回答 2查看 1.1K关注 0票数 2

我有一个链接(在字体图标上),如下所示:

代码语言:javascript
复制
<a href="https://twitter.com/intent/tweet?text=Some text about this link&amp;url=http://some.site.co/wow/greatamp;via=toby1kenobi">
    <span class="fa fa-twitter-square"></span>
</a>

我在此页上使用“有限依赖项”下的Javascript片段,这是在链接之后。这是网页上唯一的网站意图。

如果我单击链接,Twitter弹出窗口打开,原始页面导航到弹出窗口中显示的相同内容。

我不知道我做错了什么--如果我将另一个事件附加到链接并调用preventDefault(),就会停止复制,但我认为这不应该是必要的。

编辑这里是Twitter的代码:

​

代码语言:javascript
复制
(function() {
  if (window.__twitterIntentHandler) return;
  var intentRegex = /twitter\.com(\:\d{2,4})?\/intent\/(\w+)/,
      windowOptions = 'scrollbars=yes,resizable=yes,toolbar=no,location=yes',
      width = 550,
      height = 420,
      winHeight = screen.height,
      winWidth = screen.width;
 
  function handleIntent(e) {
    e = e || window.event;
    var target = e.target || e.srcElement,
        m, left, top;
 
    while (target && target.nodeName.toLowerCase() !== 'a') {
      target = target.parentNode;
    }
 
    if (target && target.nodeName.toLowerCase() === 'a' && target.href) {
      m = target.href.match(intentRegex);
      if (m) {
        left = Math.round((winWidth / 2) - (width / 2));
        top = 0;
 
        if (winHeight > height) {
          top = Math.round((winHeight / 2) - (height / 2));
        }
 
        window.open(target.href, 'intent', windowOptions + ',width=' + width +
                                           ',height=' + height + ',left=' + left + ',top=' + top);
        e.returnValue = false;
        e.preventDefault && e.preventDefault();
      }
    }
  }
 
  if (document.addEventListener) {
    document.addEventListener('click', handleIntent, false);
  } else if (document.attachEvent) {
    document.attachEvent('onclick', handleIntent);
  }
  window.__twitterIntentHandler = true;
}());

​

它绑定到文档的click事件(而不是任何锚),我不明白它为什么不取消默认导航。它似乎击中了"e.preventDefault & e.preventDefault();“行ok。

EN

回答 2

Stack Overflow用户

发布于 2015-07-24 11:41:29

试着

代码语言:javascript
复制
   var factText = <!---text you want to share -->;
   var redirectUrl = <!---url you want to redirect from twitter -->;

        // Convert to string
        var factStr = factText.toString();

        // Fact length
        var factLen = factText.length;

        // Formats "facts" that are too long... remove if not needed
        if (factLen > 103) { // max chacters allowed
            // trim, and allow space for '...'"
            var trimFact = factStr.substring(0, 70);
            var trimFact = trimFact.trim(); //<-- ensures the last character isnt ' '
            factStr = trimFact + "...";
        }

        // Update the link

        var linkRef = " https://twitter.com/intent/tweet?text= " + factStr +"&url="+ redirectUrl +"&hashtags=tweetTest";

        window.open(linkRef, 'mywin','left=20,top=20,width=500,height=500,toolbar=1,resizable=0')

        jQuery('#factLink').attr('href', linkRef);
票数 0
EN

Stack Overflow用户

发布于 2016-01-31 21:28:42

这个问题是由于widget.js代码添加了第二个意图,并将original_referer=添加到您所请求的意图中,并以1的价格预置到2。

name= &original_referer=

代码语言:javascript
复制
{function r(t){var e=~a.host.indexOf("poptip.com")?"https://poptip.com":a.href,n="original_referer="+e;return[t,n].join(-1==t.indexOf("?")?"?":"&")}

换句话说,添加的代码是重复意图的,弹出已经包含在widget.js中的代码功能

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31609453

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档