2010-10-02 122 views
0

我試圖讓這個代碼的工作 -jQuery和Adobe AIR的衝突

var loader;  
$(function() {  
    loader = new air.HTMLLoader();  
    loader.addEventListener(air.Event.COMPLETE, complete);  
    loader.load(new air.URLRequest('http://www.lilpirate.net/blog')); 
});  
function complete() { 
    $(loader.window.document).ready(function(){ 
    $("#texts").val($("#header",loader.window.document).val()); 
    alert("Complete!");         
    }); 
}  

使用ADL編譯它後,窗口會打開,一切如預期,但在終端我得到的消息

錯誤:Adobe Flash Player錯誤:無法加載cURL庫

我得到完整!警告消息,但帶有id文本的textarea不會更新#header中的數據,它位於http://www.lilpirate.net/blog

我認爲這是因爲adl正在拋出錯誤消息而發生的。

我正在運行Fedora 13 x64並正確安裝了Flash Player(firefox test)。我也安裝了libcurl和libcurl-devel軟件包。

幫助!

回答

2

可以達到什麼樣的你正在嘗試做的(我認爲),而不使用空氣的HTMLLoader是這樣的:

$(function() {  
    $.ajax({ 
     url: 'http://www.lilpirate.net/blog', 
     success: complete, 
     dataType: 'html' 
    }); 
}); 
function complete(html) { 
    var header = $(html).find('#header').html(); 
    $('#texts').html(header); 
}  

安全提示
我最好只想說,這個作品,因爲空氣將允許跨域ajax請求。空氣也將允許無限制地訪問本地文件系統。您需要非常小心,不要使用此方法包含任何惡意腳本。
您應該採取措施清理回覆,例如使用dataFilter(data, type)刪除任何腳本元素。

+0

其實我只是想屏幕刮的頁面。所以不要擔心:-) – kapeels 2010-10-03 10:03:53

+0

謝謝你的答案。這給了我一個想法,實現我想要的!以下是我用來繼續屏幕抓取的確切代碼。非常感謝! :) – kapeels 2010-10-03 11:06:14

0

我通過使用下面的代碼來獲取HTMLLoader中的數據。

此代碼提醒#header的html內容。

$(function() {  
    $.ajax({ 
      url: 'http://www.lilpirate.net/blog', 
      success: callComplete, 
      dataType: 'html' 
    }); 
}); 
var loader; 
function callComplete(html) {               
    loader = new air.HTMLLoader();      
    loader.addEventListener(air.Event.COMPLETE, processComplete);         
    loader.loadString(html);       
}  
function processComplete() { 
    var header = $('#header',loader.window.document).html(); 
    alert(header); 
} 

希望這有助於某人。

1

它做到這一點的方法:

function getUrlSource(sourceurl){ 
    var url = new air.URLRequest(sourceurl); 
    var loader = new air.URLLoader(); 
    loader.addEventListener(air.Event.COMPLETE, loadComplete); 
    loader.load(url); 
    function loadComplete(e){ 
     mydata = loader.data; 
     $("#dump").html(mydata); 
    } 
}