簡體   English   中英

Twitter Web Intent彈出窗口兩次打開

[英]Twitter web intent popup opening twice

我有一個鏈接(位於“真棒字體”圖標上),看起來像這樣:

<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的代碼:

 (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();” 行。

我知道這個問題是從七月份開始的,但是如果其他人遇到這個問題,我在創建帶有打開彈出窗口的onclick屬性的鏈接時也會遇到同樣的事情。 看起來是因為我們還包含platform.twitter.com/widgets.js此widgets.js文件也包含觸發彈出窗口的代碼。 我刪除了onclick並仍然創建了彈出窗口(僅帶有普通的<a>標簽鏈接)。 這只是一種解決方法,但確實可以解決當前問題。 現在,我只是試圖找出是否有辦法以某種方式禁用widgets.jsopen.window功能。

試試看

   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);

該問題是由widget.js代碼添加了第二個意圖而導致的,其中第二個意圖與original_referer=添加到您請求的意圖中,並且以1的價格存儲了2。

https://twitter.com/intent/user?screen_name=&original_referer =

{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中已經包含的Intent Popup代碼功能。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM