Newer
Older
chrome-lod / contentscript.js
function peelBackRdf(data) {
  $('body').prepend('<div id="target"><textarea id="code"></textarea></div>');
  $('#code').text(data);
  var cm = CodeMirror.fromTextArea($('#code')[0], {
    mode: "xml",
    readOnly: "nocursor"      
  });
  $('#target').fold({
    directory: "chrome-extension://" + chrome.runtime.id
  });
}

var res = document.evaluate("//link[(@rel = 'alternate') or (@rel = 'meta')]", document.head, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null)

var rdfUrl = null;

for (var i=0; i < res.snapshotLength; i++) {
  if (res.snapshotItem(i).type == "application/rdf+xml") {
    console.log("Found link rel=(alternate|meta) type=application/rdf+xml");
    rdfUrl = res.snapshotItem(i).href; // relative
    chrome.runtime.sendMessage({type: 'rdf+xml'}, function(response) {
      console.log(response.text);
    });
    break;
  }
}

if (rdfUrl == null) { // Try fetching current page as RDF
  $.ajax(document.URL, {
    accepts: { text: 'application/rdf+xml' },
    dataType: 'text',
    success: function(data, textStatus, res) {
      var ct = res.getResponseHeader('Content-Type');
      if ((ct != null) && (ct.slice(0, 'application/rdf+xml'.length) == 'application/rdf+xml')) {
        chrome.runtime.sendMessage({type: 'rdf+xml'}, function(response) {
          console.log(response.text);
        });
        peelBackRdf(data);
      }
    }
  });
} else {
  $.ajax(rdfUrl, {
    accepts: { text: 'application/rdf+xml' },
    dataType: 'text',
    success: function(data, textStatus, res) {
      peelBackRdf(data);
    }
  });
}