Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   UserJS скрывающий <div> (https://javascript.ru/forum/misc/35922-userjs-skryvayushhijj-div.html)

Waspwort 26.02.2013 21:10

UserJS скрывающий <div>
 
Нужен юзер скрипт для vk.com, который будет убирать из поисковой выдачи блоки <div class="audio fl_l"></div>, в теле которых содержится слово Remix(в любом регистре).

Код html для примера:

<div class="audio  fl_l" id="audio20546304_173281681" onmouseover="addClass(this, 'over');" onmouseout="removeClass(this, 'over');">
  <a name="20546304_173281681"></a>
  <div class="area clear_fix" onclick="if (cur.cancelClick){ cur.cancelClick = false; return false;} playAudioNew('20546304_173281681')">
    <div class="play_btn fl_l">
      <div class="play_btn_wrap"><table class="vkaudio_down"><tbody><tr><td><div class="play_new" id="play20546304_173281681" style="width:17px;" vk_ok="1"></div></td><td style="vertical-align: top;"><a href="http://cs1-36.userapi.com/d10/3f61152eb01ea4.mp3" download="Andy Stott - Hatch The Plan.mp3" title="Andy Stott - Hatch The Plan.mp3" onclick="return vkDownloadFile(this);" onmouseover="vkDragOutFile(this);"><div onmouseover="vkGetAudioSize('20546304_173281681',this)" class="play_new down_btn" id="down20546304_173281681"></div></a></td></tr></tbody></table></div>
      <input type="hidden" id="audio_info20546304_173281681" value="http://cs1-36.userapi.com/d10/3f61152eb01ea4.mp3,519">
    </div>
    <div class="info fl_l">
      <div class="title_wrap fl_l" onmouseover="setTitle(this);"><b><a href="/search?c[q]=Andy%20Stott&amp;c[section]=audio" onclick="if (checkEvent(event)) { event.cancelBubble = true; return}; Audio.selectPerformer(event, 'Andy Stott'); return false"><span>Andy</span> <span>Stott</span></a></b> – <span class="title"><a href="" onclick="Audio.showLyrics('20546304_173281681',42385265,0); return cancelEvent(event);">Hatch The Plan</a> </span><span class="user" onclick="cur.cancelClick = true;"><small>(<a href="id20546304" exuser="true">E. Stevoriv</a><a id="pupid20546304_300" class="vk_usermenu_btn" onclick="pupShow(event,'id20546304_300','id20546304',this); return false;" onmousedown="event.cancelBubble = true;">▼&nbsp;</a>)</small></span><small class="duration_ fl_r" id="vk_asize20546304_173281681" url="http://cs1-36.userapi.com/d10/3f61152eb01ea4.mp3" dur="519"></small></div>
      <div class="actions">
        <div class="audio_add_wrap fl_r" onmouseover="Audio.rowActive(this, 'Добавить в мои аудиозаписи', [9, 5, 0]);" onmouseout="Audio.rowInactive(this);" onclick="Audio.addShareAudio(this, 173281681, 20546304, '8fb4955b35866bd224', 0, 0); return cancelEvent(event);">
  <div class="audio_add"></div>
</div>
      </div>
      <div class="duration fl_r">8:39</div>
    </div>
  </div>
  <div id="lyrics20546304_173281681" class="lyrics" nosorthandle="1"></div>
</div>

<div class="audio  fl_l" id="audio20546304_185310795" onmouseover="addClass(this, 'over');" onmouseout="removeClass(this, 'over');">
  <a name="20546304_185310795"></a>
  <div class="area clear_fix" onclick="if (cur.cancelClick){ cur.cancelClick = false; return false;} playAudioNew('20546304_185310795')">
    <div class="play_btn fl_l">
      <div class="play_btn_wrap"><table class="vkaudio_down"><tbody><tr><td><div class="play_new" id="play20546304_185310795" style="width:17px;" vk_ok="1"></div></td><td style="vertical-align: top;"><a href="http://cs1-15.userapi.com/d35/746bfb1fca7853.mp3" download="Hatti Vatti feat. Echo Ranks - Great (Andy Stott Remix).mp3" title="Hatti Vatti feat. Echo Ranks - Great (Andy Stott Remix).mp3" onclick="return vkDownloadFile(this);" onmouseover="vkDragOutFile(this);"><div onmouseover="vkGetAudioSize('20546304_185310795',this)" class="play_new down_btn" id="down20546304_185310795"></div></a></td></tr></tbody></table></div>
      <input type="hidden" id="audio_info20546304_185310795" value="http://cs1-15.userapi.com/d35/746bfb1fca7853.mp3,450">
    </div>
    <div class="info fl_l">
      <div class="title_wrap fl_l" onmouseover="setTitle(this);"><b><a href="/search?c[q]=Hatti%20Vatti%20feat.%20Echo%20Ranks&amp;c[section]=audio" onclick="if (checkEvent(event)) { event.cancelBubble = true; return}; Audio.selectPerformer(event, 'Hatti Vatti feat. Echo Ranks'); return false">Hatti Vatti feat. Echo Ranks</a></b> – <span class="title"><a href="" onclick="Audio.showLyrics('20546304_185310795',58018601,0); return cancelEvent(event);">Great (<span>Andy</span> <span>Stott</span> Remix)</a> </span><span class="user" onclick="cur.cancelClick = true;"><small>(<a href="id20546304" exuser="true">E. Stevoriv</a><a id="pupid20546304_308" class="vk_usermenu_btn" onclick="pupShow(event,'id20546304_308','id20546304',this); return false;" onmousedown="event.cancelBubble = true;">▼&nbsp;</a>)</small></span><small class="duration_ fl_r" id="vk_asize20546304_185310795" url="http://cs1-15.userapi.com/d35/746bfb1fca7853.mp3" dur="450"></small></div>
      <div class="actions">
        <div class="audio_add_wrap fl_r" onmouseover="Audio.rowActive(this, 'Добавить в мои аудиозаписи', [9, 5, 0]);" onmouseout="Audio.rowInactive(this);" onclick="Audio.addShareAudio(this, 185310795, 20546304, '8fb4955b35866bd224', 0, 0); return cancelEvent(event);">
  <div class="audio_add"></div>
</div>
      </div>
      <div class="duration fl_r">7:30</div>
    </div>
  </div>
  <div id="lyrics20546304_185310795" class="lyrics" nosorthandle="1"></div>
</div>


А это собственно мой user.js, который не работает ни в одном браузере

$('.audio').each(function(i, v) {
    if (-1 != $(v).html().indexOf('Remix')) {
        $(this).css('display', 'none');
    }
});


Проверял вот здесь http://jsfiddle.net/ все работает.
Что не так с кодом? Помогите пожалуйста его заставить работать в браузере.

vadim5june 26.02.2013 21:44

может его еще в $() нужно засунуть
на jsside если выбрать nowrap head тоже не будет работать
вместо $(this) поставте $(v)

Waspwort 26.02.2013 22:19

сделал вот так:
// @resource [url]http://code.jquery.com/jquery-latest.js[/url]

$(document).ready(function()
}

$('.audio').each(function(i, v) {
    if (-1 != $(v).html().indexOf('Remix')) {
        $(v).css('display', 'none');
    }
});
});


Все равно не работает

vadim5june 26.02.2013 22:25

а что в 4 строчке скобка не в ту сторону

Waspwort 26.02.2013 22:31

Спасибо, исправил. Но все равно скрипт так и не заработал. Однако если его внедрить в сам html-код то все прекрасно работает.

danik.js 26.02.2013 23:25

А jQuery не забыл подключить? Вобще ради 3 строчек подключать jQuery? Ты случайно не чиноша, которому нужно десять лямов только на создание проекта?

Waspwort 26.02.2013 23:31

>А jQuery не забыл подключить?
Если скажите как это сделать, буду очень благодарен.
>Ты случайно не чиноша
Да мне как бы рано еще, я даже школу еще не закончил

danik.js 27.02.2013 00:12

Цитата:

Сообщение от Waspwort
Если скажите как это сделать, буду очень благодарен.

Да проще без jQuery обойтись:

var audios = document.querySelectorAll('.audio');
Array.prototype.forEach.call(audios, function(item, index) {
    if (item.innerHTML.indexOf('Remix') != -1) {
        item.style.display = 'none';
    }
});

Waspwort 27.02.2013 00:20

Спасибо огромное, все заработало. А как сделать, чтобы регистронезависимо было, т.е ReMix, REMIX, remix и т.д.?

danik.js 27.02.2013 00:26

Условие тогда должно быть таким:
item.innerHTML.search(/remix/i) != -1


Часовой пояс GMT +3, время: 09:32.