Javascript Yelp 5星级评论徽章将在新窗口中打开

Javascript Yelp 5星级评论徽章将在新窗口中打开,javascript,yelp,Javascript,Yelp,我不知道如何将target=“\u blank”属性添加到五星评级徽章 这是我在网页中插入的内容…来自yelp。我在脚本中添加了最后一行以尝试添加属性,但它不接受。然而,我可以让它接受之前的div以及之后的img,只是不在锚标签上 <div class="localsocialyelpreviews"><div id="yelp-biz-badge-fsc-N6ciVLIYpasN2FWN3Nxy9Q">Gina's Pizza & Pastaria</di

我不知道如何将target=“\u blank”属性添加到五星评级徽章

这是我在网页中插入的内容…来自yelp。我在脚本中添加了最后一行以尝试添加属性,但它不接受。然而,我可以让它接受之前的div以及之后的img,只是不在锚标签上

<div class="localsocialyelpreviews"><div id="yelp-biz-badge-fsc-N6ciVLIYpasN2FWN3Nxy9Q">Gina's Pizza & Pastaria</div><script type="text/javascript">
!function(doc, id){
  var js;
  var scriptElement = doc.getElementsByTagName("script")[0];
  if (!doc.getElementById(id)) {
    js = doc.createElement("script");
    js.id = id;
    js.src = "//dyn.yelpcdn.com/biz_badge_js/fsc/N6ciVLIYpasN2FWN3Nxy9Q.js";
    scriptElement.parentNode.insertBefore(js, scriptElement);
  }
} (document, "yelp-biz-badge-script-fsc-N6ciVLIYpasN2FWN3Nxy9Q");
$("div#yelp-biz-badge-fsc-N6ciVLIYpasN2FWN3Nxy9Q > a").attr("target","_blank");</script></div>
Gina's Pizza&Pastaria
!功能(文档、id){
var-js;
var scriptElement=doc.getElementsByTagName(“脚本”)[0];
如果(!doc.getElementById(id)){
js=doc.createElement(“脚本”);
js.id=id;
js.src=“//dyn.yelpcdn.com/biz_badge_js/fsc/N6ciVLIYpasN2FWN3Nxy9Q.js”;
scriptElement.parentNode.insertBefore(js,scriptElement);
}
}(文件“yelp-biz-badge-script-fsc-N6ciVLIYpasN2FWN3Nxy9Q”);
$(“div#yelp-biz-badge-fsc-N6ciVLIYpasN2FWN3Nxy9Q>a”).attr(“目标”,“空白”);
这就是最终发生的事情。无目标属性:/

<div class="localsocialyelpreviews">
<div id="yelp-biz-badge-fsc-N6ciVLIYpasN2FWN3Nxy9Q"><a href="http://www.yelp.com/biz/ginas-pizza-and-pastaria-corona-del-mar"><img width="125" height="55" src="http://dyn.yelpcdn.com/extimg/fsc/N6ciVLIYpasN2FWN3Nxy9Q.png" alt="Gina's Pizza &amp; Pastaria"></a></div>
<p><script type="text/javascript">
!function(doc, id){
  var js;
  var scriptElement = doc.getElementsByTagName("script")[0];
  if (!doc.getElementById(id)) {
    js = doc.createElement("script");
    js.id = id;
    js.src = "//dyn.yelpcdn.com/biz_badge_js/fsc/N6ciVLIYpasN2FWN3Nxy9Q.js";
    scriptElement.parentNode.insertBefore(js, scriptElement);
  }
} (document, "yelp-biz-badge-script-fsc-N6ciVLIYpasN2FWN3Nxy9Q");
$("div#yelp-biz-badge-fsc-N6ciVLIYpasN2FWN3Nxy9Q &gt; a").attr("target","_blank");</script></p></div>


!功能(文档、id){
var-js;
var scriptElement=doc.getElementsByTagName(“脚本”)[0];
如果(!doc.getElementById(id)){
js=doc.createElement(“脚本”);
js.id=id;
js.src=“//dyn.yelpcdn.com/biz_badge_js/fsc/N6ciVLIYpasN2FWN3Nxy9Q.js”;
scriptElement.parentNode.insertBefore(js,scriptElement);
}
}(文件“yelp-biz-badge-script-fsc-N6ciVLIYpasN2FWN3Nxy9Q”);
$(“div#yelp-biz-badge-fsc-N6ciVLIYpasN2FWN3Nxy9Q a”).attr(“目标”,“空白”)


我很欣赏你的见解。。我尝试了很多不同的方法,并在yelp和stackoverflow中寻找解决方案,但找不到答案。谢谢

我不知道你是否还需要一个答案,但我有同样的问题,并且能够找到答案

我不是JavaScript专家,但据我所知,这是默认的Yelp!snippet对所有脚本重新排序,使其远程脚本位于队列的最末端;因此,即使您的行在Yelp代码之后,我认为您的“attr”修改行仍然在远程Yelp脚本运行之前排队,远程Yelp脚本实际创建您试图修改的锚(
)对象

我能够为自己的站点清理代码片段,只需将“attr”修改放入站点的“onReady”函数中。我无法想象这会影响叫喊者的行为!任何形式的脚本;它所做的正是Yelp的代码片段所做的,只是它没有在JavaScript执行管道的末尾排队

<div id="yelp-link">
    <div id="yelp-biz-badge-script-plain-BlWbNrrOL4HJqwYcmr6SUw"></div>
    <script type="text/javascript" id="yelp-biz-badge-script-plain-BlWbNrrOL4HJqwYcmr6SUw" src="//dyn.yelpcdn.com/biz_badge_js/plain/BlWbNrrOL4HJqwYcmr6SUw.js">
    </script>
</div><!-- #yelp-link -->

我希望这是有意义的,并且有帮助:-)

几个月前我一直在寻找答案,后来放弃了-我的js技能还没有达到那个水平。但是同样的问题又出现了,我在一瞬间想到了答案——用我自己的透明链接覆盖徽章。我将yelp脚本放在一个div中,并在脚本之后立即添加了我自己的链接。下面是脚本后面的html:

<a href="http://www.yelp.com/biz/yourpage" target="_blank" class="yelp-button">My Yelp Page</a>

我找到了一种直接修复javascript的方法,所以这个实际上是有效的

(1) :查看yelp为您的yelp业务徽章/按钮提供的代码。将链接复制到脚本中引用的*.js javascript文件,并在根目录中保存本地副本。你要修改它

(2) :对于*.js文件修改。。。在javascript的innerHTML行中,在href链接后添加以下代码:

\u003ca target=\"_blank\"
target=\“\u blank\”前面的\u003ca告诉javascript将target=“\u blank”放在yelp按钮的超链接/锚标记内。在\u003e\u003cimg文本之后写入的任何内容都将出现在yelp按钮的图像标记中

因此,修改后的yelp-javascript-file.js的示例副本如下:

var badge_element = document.getElementById("yelp-badge");
badge_element.innerHTML = "\u003ca href=\"http://www.yelp.com\" \u003ca target=\"_blank\" \u003e\u003cimg alt=\"Yelp\" src=\"http://dyn.yelpcdn.com/extimg/genericYelpBizButton.png\" height=\"33\" width=\"88\"\u003e\u003c/a\u003e";
(3) :现在,在Yelp提供的代码中。。。确保它指向修改后的javascript文件,而不是原始javascript文件。对于指向Yelp的简单按钮,代码如下所示:

<div id="yelp-badge" title="Yelp Business Page">
<a href="http://yelp.com">Check out Yelp</a></div>

<script type="text/javascript">(function(d, t) {var g = d.createElement(t);var s = d.getElementsByTagName(t)[0];g.id = "yelp-badge-script";g.src = "yelp-javascript-file.js";s.parentNode.insertBefore(g, s);}(document, 'script'));</script>

(函数(d,t){var g=d.createElement(t);var s=d.getElementsByTagName(t)[0];g.id=“yelp-badge-script”;g.src=“yelp-javascript-file.js”;s.parentNode.insertBefore(g,s);}(文档,“脚本”);
(最终结果):下面是脚本运行并显示按钮后加载的html的副本。是的。。。它将在新窗口/新选项卡中打开

<div id="yelp-badge" title="Yelp Business Page">
<a href="http://www.yelp.com" target="_blank">
<img alt="Yelp" src="http://dyn.yelpcdn.com/extimg/genericYelpBizButton.png" height="33" width="88">
</a>
</div>

加载脚本后,修改yelp提供的脚本以设置target=''blank'属性。添加以下内容(请确保插入您的YELP代码):

见下文:

<div id="yelp-biz-badge-YOUR-YELP-CODE">
    <a href="http://yelp.com/biz/YOUR-YELP-URL?utm_medium=badge_star_rating_reviews&amp;utm_source=biz_review_badge" target="_blank">
    Check out my biz on Yelp
    </a>
</div>
<script>(function(d, t) {
    var g = d.createElement(t);
    var s = d.getElementsByTagName(t)[0];
    g.id = "yelp-biz-badge-YOUR-YELP-CODE";
    g.src = "//yelp.com/biz_badge_js/en_US/YOUR-YELP-CODE.js";
    s.parentNode.insertBefore(g, s);

    g.onload = function() {
        document.querySelector('#yelp-biz-badge-YOUR-YELP-CODE a').setAttribute('target', '_blank');
    }

}(document, 'script'));
</script>

(功能(d,t){
var g=d.createElement(t);
var s=d.getElementsByTagName(t)[0];
g、 id=“yelp商务徽章您的yelp代码”;
g、 src=“//yelp.com/biz_badge_js/en_US/YOUR-yelp-CODE.js”;
s、 parentNode.insertBefore(g,s);
g、 onload=函数(){
document.querySelector('yelp biz badge YOUR yelp CODE a').setAttribute('target','u blank');
}
}(文件“脚本”);

我还尝试延迟加载脚本,因为我意识到Yelp徽章不会立即加载,可能会在加载脚本后加载。所以,没有成功,我也尝试了这个$(.localsocialyelviews”).delay(5000.find('a').attr(“target”),_blank);
<div id="yelp-badge" title="Yelp Business Page">
<a href="http://www.yelp.com" target="_blank">
<img alt="Yelp" src="http://dyn.yelpcdn.com/extimg/genericYelpBizButton.png" height="33" width="88">
</a>
</div>
g.onload = function() {
    document.querySelector('#yelp-biz-badge-YOUR-YELP-CODE a').setAttribute('target', '_blank');
}
<div id="yelp-biz-badge-YOUR-YELP-CODE">
    <a href="http://yelp.com/biz/YOUR-YELP-URL?utm_medium=badge_star_rating_reviews&amp;utm_source=biz_review_badge" target="_blank">
    Check out my biz on Yelp
    </a>
</div>
<script>(function(d, t) {
    var g = d.createElement(t);
    var s = d.getElementsByTagName(t)[0];
    g.id = "yelp-biz-badge-YOUR-YELP-CODE";
    g.src = "//yelp.com/biz_badge_js/en_US/YOUR-YELP-CODE.js";
    s.parentNode.insertBefore(g, s);

    g.onload = function() {
        document.querySelector('#yelp-biz-badge-YOUR-YELP-CODE a').setAttribute('target', '_blank');
    }

}(document, 'script'));
</script>