[英]Twitter web intent popup opening twice
我有一個鏈接(位於“真棒字體”圖標上),看起來像這樣:
<a href="https://twitter.com/intent/tweet?text=Some text about this link&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.js
的open.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.