1. 程式人生 > 實用技巧 >使用JavaScript為整個網站建立通用的Twitter按鈕

使用JavaScript為整個網站建立通用的Twitter按鈕

介紹

本文展示瞭如何建立一個Twitter按鈕來共享動態更改的div或動態更改的url。這將是非常有用的,如果你想要共享任何基於使用者視口的URL。例如,假設您希望在使用者的curser位於div 1時共享URL 1,然後使用者單擊share按鈕,作為響應,我們需要共享該div的URL,而不是該頁面的URL。我的解釋可能聽起來有點模稜兩可,但不用擔心,這個例子會讓我想說的更清楚。

簡單的Twitter按鈕

假設你有一個視差網站。現在,您決定新增一個Twitter分享按鈕,這樣使用者就可以分享他們正在瀏覽的任何頁面。為此,您決定使用Twitter按鈕。可以使用下面的程式碼片段將simple按鈕放置在指定的頁面上。

隱藏,複製程式碼
<ahref="https://twitter.com/share"class="twitter-share-button"data-lang="en">Tweet</a>
<script>
!function (d, s, id) {
    var js, fjs = d.getElementsByTagName(s)[0]; if (!d.getElementById(id))
    { js = d.createElement(s); js.id = id; 
    js.src = "https://platform.twitter.com/widgets.js&#8221;; fjs.parentNode.insertBefore(js, fjs); }
}(document, "
script", "twitter-wjs"); </script>

以上程式碼將建立一個簡單的按鈕,如下圖所示:

要共享URL,只需單擊按鈕,其餘的由Twitter自己處理。現在看看下面的圖片:

您可以通過更改錨標記的屬性來定製URL文字和要共享的URL。例如,檢查以下程式碼片段:

現在輸出是這樣的:

您可以檢查Twitter資源中心的其他屬性。到目前為止,它是簡單的,但這篇文章不是為了這個目的。讓我們來談談上面的Twitter按鈕的問題。

這個問題

現在假設您在一個頁面中有幾個div,並且想要共享使用者按下share按鈕時div的URL。但是由於我們只有一個公共的Twitter按鈕,它不能每次共享不同的url,因為我們已經為data-url屬性提供了一個值。現在您可能會說,我們可以使用JavaScript動態地更改URL(使用setAttribute()方法等),但這是不可能的。推特在幕後施展了一些魔法。請看下面的圖片:

神奇之處在於,您為Twitter按鈕建立了錨標記,但在頁面載入之後,它卻不在頁面中。如果您檢視上面的圖片,您可以很容易地發現我們的頁面中添加了一個iframe。實際上,iframe是由Twitter按鈕JavaScript新增的。它將錨呈現給IFrame。這就是為什麼我們不能用簡單的技術來改變它。所以問題是如何動態更改URL,換句話說,在頁面載入之後。

解決方案

為了解決前面的問題,我們需要完全刪除那個按鈕,然後建立我們自己的按鈕。我們還可以更改新的iFrame的屬性,但這會更加麻煩。在開始之前,我們需要準備工作區。你可以開啟JS Bin或者從下面的程式碼開始。

準備工作

只需建立一個新的HTML檔案,並把這段程式碼:

隱藏,複製程式碼
<html>
<head>
    <linkhref="http://ajax.googleapis.com/ajax/libs/jqueryui/
    1/themes/smoothness/jquery-ui.min.css&#8221;
    rel="stylesheet"type="text/css"/>
    <scriptsrc="http://ajax.googleapis.com/ajax/libs/
    jquery/1/jquery.min.js"></script>
    <scriptsrc="http://ajax.googleapis.com/ajax/libs/
    jqueryui/1/jquery-ui.min.js"></script>
    <metacharset="utf-8"/>
    <title>Overlay by Arpit</title>
      <style>
        /* we will use this section for adding css classes or any styling */
    </style>
 </head>
<body>
       <!–HTMLwillgohere>
      <script>
          $(document).ready(function () {
              // We will use this for adding our jQuery or scripts
          });
    </script>
</body>
</html>

複製這個問題

為了解決這個問題,我們需要那個問題的原型。要建立原型,只需將以下HTML貼上到HTML部分中。

隱藏,複製程式碼
<div id="block1" onmouseover="share
(‘UploadFile/4aac15/building-accordion-with-css3-without-using-any-jquery-or-js/’);">
</div>
<div id="block2" onmouseover="share
(‘UploadFile/4aac15/creating-a-file-uploader-using-javascript-and-html-5/’);">
</div>
<div id="block3" onmouseover="share
(‘UploadFile/4b0136/getting-started-with-view-in-mvc-5/’);">
</div>

在前面的HTML中,我建立了3個div,並假設每個div都有一些您想要與common share按鈕共享的內容。共享方法中的URL是內容的URL。在我的例子中,它是不同的,但你也可以傳遞片段URL,這樣當它被點選時,可以輕鬆導航到那個div。

隱藏,複製程式碼
<div id="block2" onmouseover="share
(‘UploadFile/4aac15/creating-a-file-uploader-using-javascript-and-html-5#middleSection’);">

中間部分是片段名。Share是我們將在本文後面編寫的一個函式。要做一些設計,只需新增以下CSS:

隱藏,複製程式碼
#ta{
  position:fixed;
  left:92%;
  top:51%;
  width:50px;
  height:50px;
}
#block1{
 width:100%;
  height:900px;
  background-color:rgba(1,220,3,0.4);
  border:1px solid black;
}
#block2{
 width:100%;
  height:900px;
  background-color:rgba(41,220,130,0.4);
  border:1px solid black;
}
#block3{
 width:100%;
  height:900px;
  background-color:rgba(1,220,123,0.4);
  border:1px solid black;
}

函式的作用是:生成顏色。CSS的其餘部分相當平庸。現在讓我們把Twitter按鈕新增到我們的頁面;為此,新增以下HTML片段。

隱藏,複製程式碼
<aid="ta"href="https://twitter.com/share?url=https%3A%2F%2Fdev.twitter.com%2Fpages
%2Ftweet-button&#8221;target="_blank">
     <imgsrc=’http://wis.ewi.tudelft.nl/tweetum/twitter.png&#8217; height=50 width=50/>
 </a>

它將新增帶有藍色小鳥圖示的Twitter按鈕。

編寫指令碼並解決問題

現在是時候進入戰場了,我們有JavaScript作為武器來對抗這個問題。要解決這個問題,我們需要使用“查詢字串”。簡單來說,我們需要做的是:

      獲取原始查詢字串。為此,我們可以在錨元素上使用getAttribute("href")。我們把它命名為rawSrc。如下圖所示:
    現在我們需要在查詢字串中找到“url=”的索引。我們叫它li1。它在字串中包含"url="的索引。現在從查詢字串中刪除“url=”及其之後的所有內容並儲存它。我們可以使用substring()函式。我們叫它“backUrl1”。它包含Twitter共享URL,但沒有任何實際的共享URL。現在我們需要在查詢字串中新增我們自己的URL。這很簡單,只需將共享函式的引數附加到backUrl1中。我們叫它newUrl1。現在對於重要的任務,我們需要通過這個新URL更新錨標記href的值。為此,我們將使用setAttribute()方法。所有的技術工作都完成了。現在讓我們將整個程式碼包裝到一個接受要共享的URL的函式呼叫共享中。

完成上述所有步驟後,指令碼將類似於以下程式碼片段:

現場演示

總結

感謝您閱讀本文。我盡力使它切中要點。為了簡單起見,刪除了多餘的程式碼。我還省略了查詢字串中的其他引數,但您可以按照與前一個相同的方式新增它們。

本文轉載於:http://www.diyabc.com/frontweb/news13621.html