Как я могу получить текст с href на веб-сайте (источник страницы), используя javaScript? - PullRequest
0 голосов
/ 15 января 2010

Это часть страницы источника сайта. Мне нужно взять "crsEdId = 78" в последней строке. Использование JavaScript или JQuery.

Я буду использовать Mozilla Jetpack для выполнения этой задачи.

Как я могу получить этот код первым? и что с этим делать (RegEx или JQuery)!?

<div class="tools-menu-body" id="tools-menu-div" style="display: none;">
        <div id="menu_glider">
            <div class="scroller">
                <div class="content">
                     <div class="section" id="courses_menu">
                        <ul class="tools-menu-ul">
                            <li class="tools-menu-back"><a href="#main_menu" class="controls">back</a></li>
<li><a title="Advanced Software Engineering Lab: Open Source Development" href="../Courses/CourseEdition.aspx?crsEdId=78">CSEN 914 </a></li>

ЭТО РАБОТАЛО:

ну, это было глупо - мне просто нужно было поместить селектор в функцию щелчка, почему бы мне не подумать об этом раньше.

  jetpack.statusBar.append({
  html: "Boom<i>!</i>",
  width: 45,
  onReady: function(widget){
      $(widget).click(function(){
             var doc= jetpack.tabs.focused.contentDocument;
             var link= doc.querySelector('#courses_menu > ul > li:nth-child(2) a');
             var test= doc.getElementById('#container'); 
             jetpack.notifications.show("Course is is = "+ link);

});
}
});    

Теперь мне нужно получить все href внутри этого courses_menu !! Вы можете помочь в этом?

Ответы [ 4 ]

1 голос
/ 15 января 2010

Может быть, я что-то упускаю, но вы не можете просто получить href для этого элемента, а затем использовать RegEx, чтобы получить то, что вы хотите?

0 голосов
/ 15 января 2010

Если у вас есть документ на текущей вкладке, я полагаю, Jetpack дает его вам как:

var doc= jetpack.tabs.focused.contentDocument;

Тогда, в простом JS, получите ссылку любым удобным для вас способом. Например, чтобы получить первую ссылку из второго элемента списка:

var menu= doc.getElementById('courses_menu');
var link= menu.getElementsByTagName('li')[1].getElementsByTagName('a')[0];

Если вы используете Jetpack, вы, вероятно, можете полагаться на достаточно новую версию Firefox, чтобы иметь встроенную поддержку Selectors-API, так что вы могли бы получить это проще без использования дополнительной библиотеки, такой как jQuery, например:

var link= doc.querySelector('#courses_menu>ul>li:nth-child(2) a');

Теперь в старом школьном DOM Level 0 есть несколько простых свойств, позволяющих получить части URL-адреса внутри ссылки, не прибегая к ненадежной обработке регулярных выражений. Если вам нужна вся строка запроса crsEdId=78, вы можете сказать:

var query= link.search.substring(1);

(подстрока должна убрать любой начальный символ ?.)

Если может быть больше параметров запроса, и вы хотите специально найти тот, который называется crsEdId, вам необходимо полностью обработать запрос, например ::

var crsEdId= getParameter(query, 'crsEdId');

function getParameter(query, name) {
    var pars= query.split(/[&;]/g);
    for (var i= pars.length; i-->0;) {
        var n= pars[i].split('=')[0];
        if (decodeURIComponent(n)===name)
            return decodeURIComponent(pars[i].substring(n.length+1));
    }
}
0 голосов
/ 15 января 2010

Попробуйте:

alert($('#courses_menu').children('li').get(2).attr('href'));
0 голосов
/ 15 января 2010

В jQuery:

var matches = $('a').attr('href').match(/crsEdId=(\d+)/);
...