使用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>

以上代码将创建一个简单的按钮,如下图所示:

a9p1.JPG

要共享URL,只需单击按钮,其余的由Twitter自己处理。现在看看下面的图片:

a9p2.JPG

您可以通过更改锚标记的属性来定制URL文本和要共享的URL。例如,检查以下代码片段:

a9p3.jpg

现在输出是这样的:

a9p4.JPG

您可以检查Twitter资源中心的其他属性。到目前为止,它是简单的,但这篇文章不是为了这个目的。让我们来谈谈上面的Twitter按钮的问题。

这个问题

现在假设您在一个页面中有几个div,并且想要共享用户按下share按钮时div的URL。但是由于我们只有一个公共的Twitter按钮,它不能每次共享不同的url,因为我们已经为data-url属性提供了一个值。现在您可能会说,我们可以使用JavaScript动态地更改URL(使用setAttribute()方法等),但这是不可能的。推特在幕后施展了一些魔法。请看下面的图片:

a9p8.jpg

神奇之处在于,您为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。如下图所示:
a9p5.JPG
    现在我们需要在查询字符串中找到“url=”的索引。我们叫它li1。它在字符串中包含"url="的索引。现在从查询字符串中删除“url=”及其之后的所有内容并保存它。我们可以使用substring()函数。我们叫它“backUrl1”。它包含Twitter共享URL,但没有任何实际的共享URL。现在我们需要在查询字符串中添加我们自己的URL。这很简单,只需将共享函数的参数附加到backUrl1中。我们叫它newUrl1。现在对于重要的任务,我们需要通过这个新URL更新锚标记href的值。为此,我们将使用setAttribute()方法。所有的技术工作都完成了。现在让我们将整个代码包装到一个接受要共享的URL的函数调用共享中。

完成上述所有步骤后,脚本将类似于以下代码片段:

a9p6.jpg

现场演示

a9p9.JPG

总结

感谢您阅读本文。我尽力使它切中要点。为了简单起见,删除了多余的代码。我还省略了查询字符串中的其他参数,但您可以按照与前一个相同的方式添加它们。

本文转载于:http://www.diyabc.com/frontweb/news13621.html

原文地址:https://www.cnblogs.com/Dincat/p/13478679.html