Javascript в файле .js, обнаруживающий наличие ссылки в родительском html

#javascript

#javascript

Вопрос:

Я создаю некоторую ссылку-приманку, которая в основном представляет собой размещенный извне файл .js, который люди могут размещать на своих веб-сайтах. Я хотел бы, чтобы сопровождающая HTML-ссылка сопровождала виджет, однако я хотел бы, чтобы виджет определял, присутствует ли ссылка. т.Е.

 amp;<script src="http://domain.com/foo.js">amp;</script><br />
by amp;<a href="http://domain.com">My Siteamp;</a> amp;<-- detect this is here
  

Проблема в том, что я не знаю, на каких сайтах будет размещен мой виджет.

есть идеи?

Комментарии:

1. Эта ссылка может быть легко скрыта с помощью display:none . Если вы действительно хотите «ссылку-приманку», подумайте о добавлении небольшой ссылки рядом с активной частью вашего кода. Если кому-то нравится ваша функция, они могут посетить ваш сайт.

Ответ №1:

 var l = document.links, myLinkTest = false;
var linkcount = l.length;
while(linkcount > 0 amp;amp; !myLinkTest) {
  if(l[linkcount-1].href == "http://domain.com"){myLinkTest = true;}
  linkcount --;
}
var widget = function(){
  if(myLinkTest){
    //do stuff
  }
}();
  

Протестируйте все ссылки на странице и запустите функцию скрипта только в том случае, если ваша ссылка найдена?

Комментарии:

1. попробовал это и изменил dostuff на document.write(‘это работает’); но он не сообщает об успехе.

Ответ №2:

Вы можете просмотреть все элементы привязки и убедиться, что там есть привязка с этим href, или проверить по другим критериям.

 var isMyLinkPresent = function () {
    var anchors = document.getElementsByTagName('a');
    for (i = 0; i < anchors.length; i  ) {
        if(anchors[i].attr('href') === "http://domain.com") {
            return true;
        }
    };
    return false;
}
//in case you want to notify you own server of the presence, this will send a request to your server for picking up which site actually has the link
(function () {
    if (isMyLinkPresent()) {
        var script = document.createElement('script');
        script.attr('src', 'http://domain.com/tellmewhichsitehasit?site='   window.location.host)
        document.head.appenChild(script);
    }
})();
  

В качестве альтернативы вы могли бы поместить ссылку самостоятельно с помощью javascript, но тогда у вас должен быть какой-то API, который будет использовать веб-мастер. Например, в атрибуте ‘src’ скрипта вы можете добавить параметры, которые затем можно выбрать при генерации javascript или интерпретировать его, посмотрев на src.

Комментарии:

1. привет, я попробовал это и удалил биты ‘на случай, если вы хотите …’ и изменил return true; на document.write (‘works’); но он не сообщает об успехе… какие-либо советы?

2. можете ли вы привести пример HTML-документа, с которым вы его выполняете?