2012-07-29 10 views
5

Ben javascript ile bağlantı etiketinin içeriğini al - değil CSS

<LINK rel="Index" href="index.html"> 
<LINK rel="Next" href="Chapter3.html"> 
<LINK rel="Prev" href="Chapter1.html"> 

bu JavaScript DOM üzerinden erişilebilir olup olmadığını

bilen var mı (w3 web numuneden alınan) sahip varsayarsak?

Bilmek İstediğim HTML belgesinde bunun gibi ana etiket gibi okunup okunmadığı ve DOM'a eklenip eklenmediği ve DOM'lerine de erişebilsem.

+0

bir ajax istek gönder onların içeriğini almak? –

+0

'link' etiketini veya bu link etiketiyle referans verilen dosyanın içeriğini almak isteyip istemediğinizden emin değilsiniz. – devundef

+0

Bilmek İstediğim HTML belgesinde bunun gibi ana etiketler gibi okunup okunmadığı ve DOM'a eklendiğinde ve DOM'lerine de erişebiliyorsam bağlantı etiketleri var. – sproketboy

cevap

2

deneyin bu - http://jsfiddle.net/TpTsJ/ (ilk 2 JSFiddle bağlantılar - Eğer sayfaya olmaz)

var links = document.getElementsByTagName("link"); 
for (var i = 0; i < links.length; i++) { 
    alert(links[i].getAttribute("rel") + ' : ' + links[i].getAttribute("href"));   
}​ 
+0

Evet Bunu yapabilirim ama href'in gerçek DOM'ına erişebilir miyim diye merak ediyordum. Bunu bir ajax çağrısı aracılığıyla yapabileceğimi biliyorum, ancak belki de tarayıcı bunu zaten yapıyor. – sproketboy

+1

Hayır. Sadece ajax yolu. –

11

bu kod var:

<script type="text/javascript"> 
var your_url = 'http://www.example.com'; 
</script> 

<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js" ></script> 
<script type="text/javascript"> 
// jquery.xdomainajax.js ------ from padolsey 

jQuery.ajax = (function(_ajax){ 

    var protocol = location.protocol, 
     hostname = location.hostname, 
     exRegex = RegExp(protocol + '//' + hostname), 
     YQL = 'http' + (/^https/.test(protocol)?'s':'') + '://query.yahooapis.com/v1/public/yql?callback=?', 
     query = 'select * from html where url="{URL}" and xpath="*"'; 

    function isExternal(url) { 
     return !exRegex.test(url) && /:\/\//.test(url); 
    } 

    return function(o) { 

     var url = o.url; 

     if (/get/i.test(o.type) && !/json/i.test(o.dataType) && isExternal(url)) { 

      // Manipulate options so that JSONP-x request is made to YQL 

      o.url = YQL; 
      o.dataType = 'json'; 

      o.data = { 
       q: query.replace(
        '{URL}', 
        url + (o.data ? 
         (/\?/.test(url) ? '&' : '?') + jQuery.param(o.data) 
        : '') 
       ), 
       format: 'xml' 
      }; 

      // Since it's a JSONP request 
      // complete === success 
      if (!o.success && o.complete) { 
       o.success = o.complete; 
       delete o.complete; 
      } 

      o.success = (function(_success){ 
       return function(data) { 

        if (_success) { 
         // Fake XHR callback. 
         _success.call(this, { 
          responseText: data.results[0] 
           // YQL screws with <script>s 
           // Get rid of them 
           .replace(/<script[^>]+?\/>|<script(.|\s)*?\/script>/gi, '') 
         }, 'success'); 
        } 

       }; 
      })(o.success); 

     } 

     return _ajax.apply(this, arguments); 

    }; 

})(jQuery.ajax); 



$.ajax({ 
    url: your_url, 
    type: 'GET', 
    success: function(res) { 
     var text = res.responseText; 
     // then you can manipulate your text as you wish 
     alert(text); 
    } 
}); 

</script> 
+0

Bu, tüm URL'ler için çalışıyor gibi görünmüyor. Herhangi bir fikir neden url = http://www.andy-howard.com/blog.htm için kullanmaya çalışırken bir hata alıyorum? –

+0

Ve bence sınırlıdır. Bir sebepten dolayı çalışmayı bıraktı. –

+0

benim için çalışmıyor –

İlgili konular