2017-09-05 21 views
1

我正在將基於WindowsForm的RSS聚合器作爲業餘愛好項目工作。我遇到了一個問題,同時顯示來自RSS瀏覽器的描述,該瀏覽器在webbrowser控件中包含html。以「//」開頭的RSS提要中的URL在WebBrowser控件中未加載

導致我的問題的說明的一個例子:

"<img border=\"0\" src=\"//images10.newegg.com/NeweggImage/ProductImageCompressAll125/14-487-346-Z01.jpg\" width=\"125\" height=\"94\" title=\"\" alt=\"\"> 

的問題是IMG SRC。如果我在它前面加上http:,它就可以很好地加載圖像。否則,我會得到一個X盒子,而不是那種你不幸可以玩遊戲的那種。

解決方法是解析每個描述,並在需要的地方添加http:字符串,但這看起來像是大量不必要的編碼,每個提要都會有所不同。

有沒有更好的方式來顯示用HTML格式化的RSS Feed數據,或者有沒有辦法通過webbrowser控件解決上述問題?

+0

通常情況下,當一個源文件以'//開頭時,這意味着特定文件可以通過'http'或'https'服務。在解析時,當前協議通常由網頁瀏覽器附加。作爲一個例子,當你在一個安全的頁面https:// www.example.com時,這個資源將被讀作https://images10.newegg.com/NeweggImage/ProductImageCompressAll125/14-487-346-Z01。 jpg',而在非安全頁面http:// www.example.com上,它將被讀爲'http:// images10.newegg.com/NeweggImage/ProductImageCompressAll125/14-487-346-Z01.jpg' – ImaBrokeDude

回答

3

如何顯示用HTML格式化的RSS Feed數據?

我不確定是否有辦法。


有沒有辦法解決以上WebBrowser控件中描述的問題?

您可以輕鬆地分析所有的IMG的src屬性使用jQuery前面加上http:

$(function() { 
    $('img').attr('src', function(index, src) { 
     return 'http:' + this.getAttribute('src'); 
    }); 
}); 
+0

我不喜歡這個答案,因爲你基本上重複他提出的問題,他們已經預先用'http',他們正在尋找一個更好的方法來做到這一點。雖然我不會低估它,因爲它可能是所有人都需要的。 – ImaBrokeDude

+0

親愛的@ImaBrokeDude,這不是一個聊天網站。我們是一羣專業程序員。請注意我如何引用OP來內聯回答多個問題。 OP要求解決方案。請在下次評論前加倍閱讀。謝謝。 –

+0

你好,我不把這個網站當作聊天網站。你可能不喜歡我選擇的名字,但我說的是有效的。爲什麼OP重複完全一樣的東西?具體關於預先加入'http'。你可以清楚地看到他們已經做到了。除了爲給定問題指定的語言外,您的答案步驟之上,爲什麼用戶應該使用JavaScript來解析C#字符串? – ImaBrokeDude

1

由於有問題的URL不與協議前綴,它會被認爲是一個相對URL,但有顯然不會成爲本地資源展示。 Moresubject

可以通過使用在Determine if Absolute or Relative URL加上嘗試失敗的情況下堅持http:src上,並且重試描述的解決方案減輕此。

相關問題