當前位置:首頁 » 網頁前端 » web組件源碼
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

web組件源碼

發布時間: 2023-01-12 17:50:13

『壹』 web軟體源代碼怎麼用

其實這是迅雷WEB自帶的一個彈出廣告的文件,因為最近一端時間流氓軟體和惡意代碼比較受重視,在以前這些問題都是被忽略的,隨著殺毒軟體的升級,對於這些情況也開始注重查殺了,另外這還與你的下載有關,如果你下載的迅雷帶有惡意代碼或你所下載的網站帶有就說不一定了,其實沒事

『貳』 在學習web想知道如何看懂網頁源代碼,有什麼好的方法嗎,或者有網頁源代碼旁邊有詳細備注的,這樣上手

第一種:打開一個網頁後點擊滑鼠的 右鍵就會有"查看源文件",操作 滑鼠右鍵--->查看源文件 即可彈出一個記事本,而記事本內容就是此網頁的html代碼。
可能會碰到一些網頁滑鼠右鍵無反應或提出提示框,那是因為做網頁的加入了JS代碼來禁止用戶查看源文件代碼或復制網頁內容,但是這種方法也沒用,只有你稍微懂得以下第二種方法即可查看此網頁的源代碼源文件。
第二種:通過瀏覽器狀態欄或工具欄中的點擊 「查看」然後就用一項「查看源代碼」,點擊查看源代碼即可查看此網頁的源代碼源文件。
在微軟IE下 查看--->源文件 即可查看此網頁代碼在傲遊瀏覽器下截圖:
查看別人網頁的源代碼可以為我們製作網頁時候有幫助,以後將介紹查看源代碼更多方法及怎麼運用到別人的源代碼文件。

『叄』 webview中有沒有辦法獲取到網頁源代碼,載入AJAX後的

webview 獲取 網頁的title

WebView mWebView = (WebView) findViewById(R.id.mwebview);
mWebView.setWebViewClient(new WebViewClient() {
@Override
public void onPageFinished(WebView view, String url) {
ExperimentingActivity.this.setTitle(view.getTitle());
}
});

getTitle
public String getTitle()

Get the title for the current page. This is the title of the current page until WebViewClient.onReceivedTitle is called.

返回:
The title for the current page.

下面這篇文章總結的比較全 ,但是 onReceivedTitle()方法在goback()之後無效。

如有轉載,請聲明出處: 時之沙: http://blog.csdn.net/t12x3456

Android WebView常見問題解決方案匯總:

就目前而言,如何應對版本的頻繁更新呢,又如何靈活多變地展示我們的界面呢,這又涉及到了web app與native app之間孰優孰劣的爭論. 於是乎,一種混合型的app誕生了,靈活多變的部分,如淘寶商城首頁的活動頁面,一集凡客誠品中我們都可以見到web 頁面與native頁面的混合,既利用了web app的靈活易更新,也藉助了native app本身的效率.
當然,就會用到webview這樣的一個控制項,這里,我把自己使用過程中遇到的一些問題整理下來.

首先上張圖對WebView進行一個基本的回顧:

以上思維導圖原文件下載地址:

http://download.csdn.net/detail/t12x3456/6509195

然後看一下具體的問題及解決方案:

1.為WebView自定義錯誤顯示界面:

覆寫WebViewClient中的onReceivedError()方法:

[java] view
plain

/**
* 顯示自定義錯誤提示頁面,用一個View覆蓋在WebView
*/
protected void showErrorPage() {
LinearLayout webParentView = (LinearLayout)mWebView.getParent();

initErrorPage();
while (webParentView.getChildCount() > 1) {
webParentView.removeViewAt(0);
}
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT);
webParentView.addView(mErrorView, 0, lp);
mIsErrorPage = true;
}
protected void hideErrorPage() {
LinearLayout webParentView = (LinearLayout)mWebView.getParent();

mIsErrorPage = false;
while (webParentView.getChildCount() > 1) {
webParentView.removeViewAt(0);
}
}

protected void initErrorPage() {
if (mErrorView == null) {
mErrorView = View.inflate(this, R.layout.online_error, null);
Button button = (Button)mErrorView.findViewById(R.id.online_error_btn_retry);
button.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
mWebView.reload();
}
});
mErrorView.setOnClickListener(null);
}
}

[java] view
plain

[java] view
plain

[java] view
plain

@Override
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
<span style="white-space:pre"> </span>
<span style="white-space:pre"> </span>mErrorView.setVisibility(View.VISIBLE);
<span style="white-space:pre"> </span>super.onReceivedError(view, errorCode, description, failingUrl);
}

2.WebView cookies清理:

[java] view
plain

CookieSyncManager.createInstance(this);
CookieSyncManager.getInstance().startSync();
CookieManager.getInstance().removeSessionCookie();

3.清理cache 和歷史記錄:

[java] view
plain

webView.clearCache(true);
webView.clearHistory();

4.判斷WebView是否已經滾動到頁面底端:

[java] view
plain

getScrollY()方法返回的是當前可見區域的頂端距整個頁面頂端的距離,也就是當前內容滾動的距離.
getHeight()或者getBottom()方法都返回當前WebView 這個容器的高度
getContentHeight 返回的是整個html 的高度,但並不等同於當前整個頁面的高度,因為WebView 有縮放功能, 所以當前整個頁面的高度實際上應該是原始html 的高度再乘上縮放比例. 因此,更正後的結果,准確的判斷方法應該是:
if(WebView.getContentHeight*WebView.getScale() == (webview.getHeight()+WebView.getScrollY())){ //已經處於底端 }

5.URL攔截:

Android WebView是攔截不到頁面內的fragment跳轉的。但是url跳轉的話,又會引起頁面刷新,H5頁面的體驗又下降了。只能給WebView注入JS方法了。

6.處理WebView中的非超鏈接請求(如Ajax請求):

有時候需要加上請求頭,但是非超鏈接的請求,沒有辦法再shouldOverrinding中攔截並用webView.loadUrl(String url,HashMap headers)方法添加請求頭

目前用了一個臨時的辦法解決:

首先需要在url中加特殊標記/協議, 如在onWebViewResource方法中攔截對應的請求,然後將要添加的請求頭,以get形式拼接到url末尾

在shouldInterceptRequest()方法中,可以攔截到所有的網頁中資源請求,比如載入JS,圖片以及Ajax請求等等

『肆』 Webpack打包流程細節源碼解析(P2)

此篇博客緊承上一篇,上片討論了我們的webpack整個處理單個文件的流程,這一節主要說一說webpack的文件打包問題,其實本身是比較簡單的,但是有非同步塊和html-plugin的加入,使這個步驟變得尤為復雜,這里先介紹幾個重要的概念:

上一節中,我們成功的對每個文件進行了處理,並通過了process的方法對所有入口文件以及他們的依賴文件進行了處理,獲得了最初的依賴文件列表,現在我們就可以對資源的依賴進行優化處理,本片的內容將從webpack/lib/Compiler.js:510的斷點開始逐步的對源碼進行分析

在seal之前,由於一輪compilition已經執行完成,先調用finish方法進行收尾處理與之對應的是我們注冊的finish-moles事件,

這里我們首先看到的又是index.ejs這個老朋友,由於他是單獨的文件經過了loader處理沒有獲得額外的處理函數的依賴,所以最終這里看到的mole實際上是它的js外殼包起來的ejs文件,此階段也還沒有進行資源hash的注入等等

這里有一個FlagDependencyExportsPlugin進行了操作,聽名字可能就聽出來了,他是對我們資源中的export使用進行一個標志的作用, 和我們最終做出的tree shaking效果可能是相關的

調用seal事件處理

處理我們的preparedChunk,這個東西是我們剛好在進行addEntry的時候添加上的不知道你們還記不記得,中途就沒有添加過新的,所以講道理,一個entry是只用一個的,但是這里使用了一個數組不知道有什麼用意

然後把這個入口模塊添加到了block裡面,過後打包也是從block裡面拿數據,block裡面的東西會被打包成為單獨的文件,但是還是工作在之前的上下文中,這里可以通過看一下這里的import即是我們之前在路由文件中通過import函數設置引入的動態載入路由資源

進入到函數,就開始處理我們之前做好准備的block了,這里這是一個不斷處理依賴的過程,但是沒有使用遞歸的做法,畢竟文件太多了,不斷的進行遞歸會浪費很多空間,取而代之的是使用queue進行記錄,處理過程中不斷把新的需要處理的模塊放到queue裡面等待下一步處理

在每一步的處理中

處理完這一波循環依賴過後,本身的依賴樹結構變得扁平化,之前一層一層的模塊通過dependency連接起來作為一個樹的結構,而現在變成了頂層最終的幾個chunk

可以看到我們最終在這個入口(entry)設置中拿到了9個chunk,她們都有_moles屬性,我們的所有依賴都是放到這裡面的,是用的一個Set進行存儲,其中的依賴關系則是通過origins和reason等標識進行模塊間關系的連接的

還可以將我們的入口chunk和非同步載入的chunk進行一些對比(上面的是入口文件),下面的chunk中出現的origins就是指向我們之前的router那個mole

這個圖里也可以看到,兩個chunk實際上按照自己的路子搜集了所有的依賴,結果導致了_moles的文件數量都達到了一千多個,這就是我們常使用的CommonChunk插件需要處理的地方了,稍後進行討論

這輪處理我們成功的把主要的入口mole和非同步載入的模塊區分開了,然後開始按照類似的邏輯處理我們的第一個入口模塊

這個時候拿到chunkDependencies進行處理,這就是之前那個存儲block的東西,但是有個很奇怪的地方,就是這裡面居然只有三個chunk,而不是和上面的一樣是9個也不是只有一個入口模塊,這就讓人無從下手了(我非同步載入的模塊並不是一樣的,而且這些模塊之間沒有沒相互依賴)

喜聞樂見進行第二次處理,首先取出一個chunk拿到對應的存儲在value中的deps,對每一個項目添加上了他們的parent,但是有個組件就是用來removeParent的

在RemoveParentMolesPlugin這個插件中,針對每個mole都做了處理,看看這些模塊在哪些chunk之中有被使用到,把他們所存在的chunks按照id記錄下來,並改變她們的reason為幾種統一的chunk組合數組。這樣就做到了每個mole知道了自己被哪些chunk使用,但是從之前的單一reason到現在的多reason具體不知道有什麼用(恩。。可能是為作用域提升做准備)

然後嘛,移除空的模塊,不需要多解釋

然後這層處理就算完啦,主要進行了模塊的依賴梳理和拆分,並為他們添加上了指向父節點的指針(話說之前不是有origins嗎)

對模塊進行排序工作,不過只是按照索引進行排序罷了,那個按照出現概率進行排序處理的插件不是在這里工作的

又是那個flag的插件進行了處理,但是只是把所有模塊的used設置為了true,還有為一些被依賴的mole設置上他們的usedExports為true

ChunkConditions插件用於監視模塊上是否有chunkCondition函數,並返回他的執行結果,如果有模塊的此函數返回了false,那麼將會重寫這個模塊(重寫即是重新添加進入parent的鏈接以及reason等的設置)並且還會返回true,到至此過程不斷執行直至condition全部OK

RemoveParentMolesPlugin這個插件的作用有點玄乎,看樣子是對每個chunk進行處理,看對於多個chunk中都有的某一些mole,會直接把他們的reason設置為主要的入口chunk,而後把當前chunk中的mole移除掉(話說這個事情不是應該Common來做嗎)

然後移除所有空的模塊,再就是移除重復的模塊了(話說一直用set神他媽還會有重復的)

然後進行各種優化,比如出現的概率大的放到前面,這里還是做了mole和chunk兩種優化,也是有毛病,就像我們的react項目中可以知道react的使用次數最多,那麼他就被放到了最錢前面,緊隨其後的是echart等

HashedMoleIdsPlugin插件為我們的模塊計算出它的id,默認是通過md5進行計算,解出來的是base64的,而且計算的參數也僅僅只是通過模塊的libId進行hash,而這個libhash只是相對位置,連絕對的都不是,所以算下來這個東西能夠當成單個文件的hash了

applyMoleId,到這里你可能會想,誒之前不是已經設置好每個元素的id了嗎,為什麼還要搞這么個函數專門處理,我們在上一個生成id的時候實際上得到的id是根據我們的設置進行了截斷的,實際上拿到的hash碰撞的概率非常大,我們看看下面這個篩選的處理就可以知道,1885個模塊裡面竟然又3個重復的id,這種時候就要特殊處理了

執行sortItemsWithMoleIds依據id進行排序,不只是最外面的chunk,就連reason里的id也會被重新排序,也是蠻逗的,這里直接用的是id做比較並沒有判斷類型,也就是說把數字和字元串會混到一起,就算你是class也會拿valueOf出來比較,想想還是蠻刺激的,不過其實比較完成也沒有太特殊的用途就這么隨意一點也好

中間一些處理recordId的我忽略掉了

然後開始處理hash了,這里的hash具體使用了哪些參數和長度是多少呢

可以在此階段添加hashSalt即雜訊,給hash值添加一些特徵

進入mainTemplate的處理函數中,添加了一些字元串參數和數字參數,並且調用了mainTemplate的hash插件,但是她們的執行過程並不是保證我們最後生成的文件中能夠有結果的hash值,便於請求對應的資源文件,而是僅僅在hash的過程中添加了一些干擾的路徑參數等

最終一輪hash下來,chunk會得到自己的renderHash,而compilation會得到一個針對編譯過程的hash,這個hash就跟我們的所有資源扯上關聯啦,所以每次都是新的

創建模塊資源咯~

這些文章寫的都有點水,相當於是閱讀源碼時候做的筆記了,看看圖個樂子吧

『伍』 微信小程序封裝H5使用web-view源碼

微信小程序封裝H5域名

使用微信小程序web-view組件進行封裝H5網頁,最快的速度完成展示型小程序。 註:web-view組件不支持個人小程序,只能認證過的企業小程序。

···

『陸』 如何使用webbrowser獲取網頁的源代碼

我用vb6,c++我不熟
輸入網址後回車就可以顯示源代碼
Private Sub Command1_Click()
WebBrowser1.Navigate Editbox1.Text
End Sub

Private Sub Editbox1_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
Set xmlHTTP1 = CreateObject("Microsoft.XMLHTTP")
xmlHTTP1.Open "get", Editbox.Text, True
xmlHTTP1.send
While xmlHTTP1.readyState <> 4
DoEvents
Wend
Editbox2.Text = xmlHTTP1.responseText
Set xmlHTTP1 = Nothing
End If
End Sub

『柒』 webview中有沒有辦法獲取到網頁源代碼,載入AJAX後的

WebView(網路視圖)能載入顯示網頁,可以將其視為一個瀏覽器。它使用了WebKit渲染引擎載入顯示網頁,實現WebView有以下兩種不同的方法:
第一種方法的步驟:
1.在要Activity中實例化WebView組件:WebView webView = new WebView(this);
2.調用WebView的loadUrl()方法,設置WevView要顯示的網頁:
互聯網用:webView.loadUrl
本地文件用:webView.loadUrl("file:///android_asset/XX.html"); 本地文件存放在:assets 文件中
3.調用Activity的setContentView( )方法來顯示網頁視圖
4.用WebView點鏈接看了很多頁以後為了讓WebView支持回退功能,需要覆蓋覆蓋Activity類的onKeyDown()方法,如果不做任何處理,點擊系統回退剪鍵,整個瀏覽器會調用finish()而結束自身,而不是回退到上一頁面
5.需要在AndroidManifest.xml文件中添加許可權,否則會出現Web page not available錯誤。

『捌』 如何快速讀懂項目源碼javaWeb

一:學會如何讀一個JavaWeb項目源代碼 步驟:表結構->web.xml->mvc->db->spring
ioc->log-> 代碼
1、先了解項目資料庫的表結構,這個方面是最容易忘記 的,有時候我們只顧著看每一個方法是怎麼進行的,卻沒
有去了解資料庫之間的主外鍵關聯。其實如果先了解數據 庫表結構,再去看一個方法的實現會更加容易。
2、然後需要過一遍web.xml,知道項目中用到了什麼攔
截器,監聽器,過濾器,擁有哪些配置文件。如果是攔截 器,一般負責過濾請求,進行AOP 等;如果是監 可能是定時任務,初始化任務;配置文件有如使用了 spring
後的讀取mvc 相關,db 相關,service 相關,aop 相關的文件。
3、查看攔截器,監聽器代碼,知道攔截了什麼請求,這
個類完成了怎樣的工作。有的人就是因為缺少了這一步, 自己寫了一個action,配置文件也沒有寫錯,但是卻怎麼
調試也無法進入這個action,直到別人告訴他,請求被攔
4、接下來,看配置文件,首先一定是mvc相關的,如 springmvc
中,要請求哪些請求是靜態資源,使用了哪些 view 策略,controller 註解放在哪個包下等。 然後是db 相關配置文件,看使用了什麼資料庫,使用了
什麼orm框架,是否開啟了二級緩存,使用哪種產品作 為二級緩存,事務管理的處理,需要掃描的實體類放在什 么位置。最後是spring 核心的ioc
功能相關的配置文件, 知道介面與具體類的注入大致是怎樣的。當然還有一些如 apectj 置文件,也是在這個步驟中完成
5、log
相關文件,日誌的各個級別是如何處理的,在哪些 地方使用了log 記錄日誌
6、從上面幾點後知道了整個開源項目的整體框架,閱讀 每個方法就不再那麼難了。
7、當然如果有項目配套的開發文檔也是要閱讀的。

『玖』 如何使用webbrowser控制項獲取網頁源代碼

使用WebBrowser控制項獲取網頁源碼的方法,大多數的人都是使用以下的方法獲取:
(WebBrowser1.Document as IHtmlDocument2).body.outerHtml;
這種方法的美中不足就是只能獲取網頁<body>與</body>之間的網頁源碼,而<body>之外如<head>部分的網頁源碼就獲取不到了,下面是某大牛老師給大家分享的方法,可參考:
procere TForm1.Button1Click(Sender: TObject);
var
ole_index, oleObj: OleVariant;
i: integer;
begin
if WebBrowser1.Busy then Exit; //網頁載入中,退出。
Memo1.Lines.Clear;
//獲取主框架網址及網頁源碼
Memo1.Lines.Add(WebBrowser1.OleObject.document.url);
Memo1.Lines.Add(WebBrowser1.OleObject.document.documentElement.outerHTML);
Memo1.Lines.Add(' '); Memo1.Lines.Add(' '); //添加空行
//循環獲取每一個子框架網址及網頁源碼
for i := 0 to WebBrowser1.OleObject.document.frames.length - 1 do
begin
ole_index := i;
oleObj := WebBrowser1.OleObject.document.frames.item(ole_index);
Memo1.Lines.Add(oleObj.document.url);
Memo1.Lines.Add(oleObj.document.documentElement.outerHtml);
Memo1.Lines.Add(' '); Memo1.Lines.Add(' '); //添加空行
end;
end;

『拾』 方便閱讀Web源代碼 Gentoo下lxr配置方法

Lxr是一個基於web的源代碼交叉索引工具,用來閱讀源代碼非常方便,現記錄一下配置過程,以pidgin-2.4.1為例。
1、安裝
gentoo下安裝lxr很簡單,直接emerge即可,不過要注意的是lxr是採用perl語言寫的,要求perl和libperl安裝的時候加上ithreads這個USE
Flag,另外需要emerge
apache
mod_perl
mysql,索引工具採用glimpse則emerge
glimpse,如果要採用swish-e就USE=freetext
emerge
lxr即可。
2、准備源碼目錄
在我機器上,/data/codes/other是用來存放第三方我需要閱讀的項目,配置lxr先在/data/codes/other目錄下創建了pidgin並將pidgin解壓至pidgin目錄改名為2.4.1,在/data/codes/others/pidgin目錄下創建versions文件,寫入2.4.1。
3、准備資料庫
執行mysql
-u
root
<
/usr/share/webapps/lxr/0.9.5/sqlscripts/mysql/0.9.5_create.sql創建一個lxr庫,然後將/var/lib/mysql/lxr庫名改為pidgin。如果要添加別的項目再做類似的工作即可。
首先配置你的apache,生成默認的web目錄,emerge
--config
=www-servers/apache-x.x.x,然後修改/etc/conf.d/apache,給APACHE2_OPTS加上"-D
PERL"選項,重啟apache即可。然後執行cp
-pr
/usr/share/webapps/lxr/0.9.5/htdocs
/var/www/localhost/htdocs/pidgin,如果要添加另一個項目重復此cp操作,重要的就是配置lxr.conf,上傳了一個pidgin的lxr.conf可以參考。
5、生成索引
進入/var/www/localhost/htdocs/pidgin,ln
-snf
/data/codes/other/pidgin/lxr.conf然後執行./genxref
--url=http://localhost/pidgin即可生成索引,(對了,到這兒你會發現操作mysql資料庫時會報錯,是因為lxr建的lxr_releases表裡的release欄位與mysql的關鍵字沖突,需要修改一下/usr/lib/perl5/vendor_perl/5.8.8/LXR/Index/Mysql.pm文件,將其中的sql語句中的release欄位都加上``變成`release`)現在基本上可以訪問了。