2013-06-12 3 views
0

Я не могу понять, как добавить атрибут target = "_ blank" в значок 5 звезд.Yelp 5 звезд отзывы значок, чтобы открыть в новом окне

Это то, что я вставил на веб-страницу ... исходящий от визжа. Я добавил последнюю строку сценария, чтобы попробовать и добавить атрибут, но он не примет. Я могу, однако, заставить его принять на 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> 

Это то, что в конечном итоге происходит. NO TARGET ПРИЗНАК:/

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

Я ценю любое понимание .. Я пробовал это много различных способов и искал решения этого в визг и StackOverflow, но не могу найти ответ. Спасибо

+0

Я также попытался задержать скрипт загрузки, потому что я понимаю, что значок Yelp не загружается прямо и может загружаться после загрузки моего сценария. Итак, без успеха я тоже пробовал это ... $ ("localsocialyelpreviews"). Delay (5000) .find ('a'). Attr («target», «_ blank»); – user2479086

ответ

0

Я не знаю, нужен ли вам еще ответ на этот вопрос, но у меня был тот же вопрос и он смог понять это.

Я не эксперт по JavaScript, но из того, что я могу сказать, по умолчанию Yelp! snippet повторно заказывает все ваши скрипты, чтобы его удаленный скрипт находился в самом конце очереди; поэтому, несмотря на то, что ваша строка после кода Yelp, я думаю, что ваша линия модификации «attr» по-прежнему находится в очереди до. Удаленный сценарий Yelp работает, фактически создавая объект anchor (<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"); 
}); 

Я надеюсь, что это имеет смысл, и помогает :-)

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; 
} 
0

Я нашел прямой путь, чтобы исправить JavaScript, так что это на самом деле работы.

(1): Посмотрите на код, предоставленный визгом для значка/кнопки бизнеса Yelp. Скопируйте ссылку на файл javascript * .js, на который ссылается скрипт, и сохраните локальную копию в корневом каталоге. Вы собираетесь изменить его.

(2): Для изменений файла * .js ...В строке innerHTML в JavaScript, добавьте следующий фрагмент кода после HREF ссылки:

\u003ca target=\"_blank\" 

The \ u003ca который предшествует цель = \ "_blank \" говорит JavaScript, чтобы положить цель =» _blank " внутри гиперссылки/якорной метки кнопки виселицы. Все, что написано после текста \ u003e \ u003cimg, появится в теге изображения кнопки висельника.

Итак, пример копии модифицированных 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, загруженного после скрипт запускается и появляется ваша кнопка. и ДА ... он открывается в новом окне/новой вкладке.

<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> 
1

Измените сценарий предоставленный визг, чтобы установить цель = «_» пустой атрибут после загрузки сценария. Добавьте это (не забудьте вставить ВАШЕ 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&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>