我无法弄清楚如何将target =“_ blank”属性添加到5星评级徽章。
这是我在网页中插入的...来自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>
这就是最终发生的事情。没有目标属性:/
<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 & 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 > a").attr("target","_blank");</script></p></div>
我感谢任何见解..我尝试了很多不同的方法,并在yelp和stackoverflow中搜索解决方案,但找不到答案。感谢
答案 0 :(得分:1)
在脚本加载后,修改yelp提供的脚本以设置target ='_ blank'属性。添加此项(请务必插入您的YELP代码):
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&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>
答案 1 :(得分:0)
我不知道你是否还需要一个答案,但我有同样的问题,并且能够弄明白。
我不是JavaScript专家,但据我所知,默认的Yelp!片段重新排序所有脚本,以便其远程脚本位于队列的最后;所以,即使您的行在Yelp代码之后,我认为您的“attr”修改行仍然在之前排队远程Yelp脚本运行实际创建锚点(<a\>
)对象你正试图修改。
我能够清理自己网站的代码片段,并将“attr”修改放入我网站的“onReady”功能。我无法想象这会影响Yelp的行为!任何方式的脚本;它正在完成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 -->
...稍后在我的functions.js文件中:
$(document).ready(function() {
$("#yelp-link a").attr("target","_blank");
});
我希望这是有道理的,并且有所帮助: - )
答案 2 :(得分:0)
几个月前我一直在寻找答案而放弃了 - 我的js技能尚未达到那个级别。但是同样的问题又出现了,答案刚刚闪现出来 - 用我自己的透明链接覆盖徽章。我把yelp脚本放在div中,然后在脚本之后立即添加了我自己的链接。这是脚本之后的html:
<a href="http://www.yelp.com/biz/yourpage" target="_blank" class="yelp-button">My Yelp Page</a>
和css:
.yelp-button { background: transparent;
display: block;
height: 56px;
width: 125px;
position: absolute;
top: 0;
text-indent: -9999px;
}
答案 3 :(得分:0)
我找到了修复javascript的直接方法,因此实际上有效。
(1):查看yelp为您的Yelp商业徽章/按钮提供的代码。将链接复制到脚本中引用的* .js javascript文件,并将本地副本保存在根目录中。你要修改它。
(2):对于* .js文件修改...在javascript的innerHTML行中,在href链接后添加以下代码:
\u003ca target=\"_blank\"
在target = \“_ blank \”之前的 \ u003ca 告诉javascript在yelp按钮的超链接/锚标记内放置 target =“_ blank”。在 \ 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>
(最终结果):下面是脚本运行并显示按钮后加载的html的副本。和YES ...它会在新窗口/新标签页中打开。
<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>