㈠ JavaScript是什麼類型語言
javascrip
JavaScript一種直譯式腳本語言,是一種動態類型、弱類型、基於原型的語言,內置支持類型。它的解釋器被稱為JavaScript引擎,為瀏覽器的一部分,廣泛用於客戶端的腳本語言,最早是在HTML(標准通用標記語言下的一個應用)網頁上使用,用來給HTML網頁增加動態功能。
在1995年時,由Netscape公司的Brendan Eich,在網景導航者瀏覽器上首次設計實現而成。因為Netscape與Sun合作,Netscape管理層希望它外觀看起來像Java,因此取名為JavaScript。但實際上它的語法風格與Self及Scheme較為接近。
為了取得技術優勢,微軟推出了JScript,CEnvi推出ScriptEase,與JavaScript同樣可在瀏覽器上運行。為了統一規格,因為JavaScript兼容於ECMA標准,因此也稱為ECMAScript。
組成部分
ECMAScript,描述了該語 javascript組成 ,言的語法和基本對象。
文檔對象模型(DOM),描述處理網頁內容的方法和介面。
瀏覽器對象模型(BOM),描述與瀏覽器進行交互的方法和介面。
基本特點
JavaScript是一種屬於網路的腳本語言,已經被廣泛用於Web應用開發,常用來為網頁添加各式各樣的動態功能,為用戶提供更流暢美觀的瀏覽效果。通常JavaScript腳本是通過嵌入在HTML中來實現自身的功能的。
是一種解釋性腳本語言(代碼不進行預編譯)。
主要用來向HTML(標准通用標記語言下的一個應用)頁面添加交互行為。
可以直接嵌入HTML頁面,但寫成單獨的js文件有利於結構和行為的分離。
跨平台特性,在絕大多數瀏覽器的支持下,可以在多種平台下運行(如Windows、Linux、Mac、Android、iOS等)。
Javascript腳本語言同其他語言一樣,有它自身的基本數據類型,表達式和算術運算符及程序的基本程序框架。Javascript提供了四種基本的數據類型和兩種特殊數據類型用來處理數據和文字。而變數提供存放信息的地方,表達式則可以完成較復雜的信息處理。
日常用途
1.嵌入動態文本於HTML頁面。
2.對瀏覽器事件做出響應。
3.讀寫HTML元素。
4.在數據被提交到伺服器之前驗證數據。
5.檢測訪客的瀏覽器信息。
6.控制cookies,包括創建和修改等。
7.基於Node.js技術進行伺服器端編程。
歷史
它最初由Netscape的Brendan Eich設計。JavaScript是甲骨文公司的注冊商標。Ecma國際以JavaScript為基礎制定了ECMAScript標准。JavaScript也可以用於其他場合,如伺服器端編程。完整的JavaScript實現包含三個部分:ECMAScript,文檔對象模型,瀏覽器對象模型。
Netscape在最初將其腳本語言命名為LiveScript,後來Netscape在與Sun合作之後將其改名為JavaScript。JavaScript最初受Java啟發而開始設計的,目的之一就是「看上去像Java」,因此語法上有類似之處,一些名稱和命名規范也借自Java。但JavaScript的主要設計原則源自Self和Scheme。JavaScript與Java名稱上的近似,是當時Netscape為了營銷考慮與Sun微系統達成協議的結果。為了取得技術優勢,微軟推出了JScript來迎戰JavaScript的腳本語言。為了互用性,Ecma國際(前身為歐洲計算機製造商協會)創建了ECMA-262標准(ECMAScript)。兩者都屬於ECMAScript的實現。盡管JavaScript作為給非程序人員的腳本語言,而非作為給程序人員的腳本語言來推廣和宣傳,但是JavaScript具有非常豐富的特性。
現在很多小夥伴喜歡在互聯網上找視頻資料學習javascript,但是光看視頻你是不可能學會javascript的,沒有人指導你,而且很多視頻已經過時了 並沒有什麼用! 如果你真的想學習javascript這門技術,你可以來這個群,前面是5柒3,中間是82〇,最後是49〇, 在這里有最新的javascript課程 免費學習 也有很多人指導你 進步 不需要你付出什麼 只要你有一顆學習的心就可以了 不是願意學習或者自認不需要學習的就不要加了。
發展初期,JavaScript的標准並未確定,同期有Netscape的JavaScript,微軟的JScript和CEnvi的ScriptEase三足鼎立。1997年,在ECMA(歐洲計算機製造商協會)的協調下,由Netscape、Sun、微軟、Borland組成的工作組確定統一標准:ECMA-262。
特性
JavaScript腳本語言具有以下特點:
(1)腳本語言。JavaScript是一種解釋型的腳本語言,C、C++等語言先編譯後執行,而JavaScript是在程序的運行過程中逐行進行解釋。
(2)基於對象。JavaScript是一種基於對象的腳本語言,它不僅可以創建對象,也能使用現有的對象。
(3)簡單。JavaScript語言中採用的是弱類型的變數類型,對使用的數據類型未做出嚴格的要求,是基於Java基本語句和控制的腳本語言,其設計簡單緊湊。
(4)動態性。JavaScript是一種採用事件驅動的腳本語言,它不需要經過Web伺服器就可以對用戶的輸入做出響應。在訪問一個網頁時,滑鼠在網頁中進行滑鼠點擊或上下移、窗口移動等操作JavaScript都可直接對這些事件給出相應的響應。
(5)跨平台性。JavaScript腳本語言不依賴於操作系統,僅需要瀏覽器的支持。因此一個JavaScript腳本在編寫後可以帶到任意機器上使用,前提上機器上的瀏覽器支 持JavaScript腳本語言,目前JavaScript已被大多數的瀏覽器所支持。[3]
不同於伺服器端腳本語言,例如PHP與ASP,JavaScript主要被作為客戶端腳本語言在用戶的瀏覽器上運行,不需要伺服器的支持。所以在早期程序員比較青睞於JavaScript以減少對伺服器的負擔,而與此同時也帶來另一個問題:安全性。
而隨著伺服器的強壯,雖然程序員更喜歡運行於服務端的腳本以保證安全,但JavaScript仍然以其跨平台、容易上手等優勢大行其道。同時,有些特殊功能(如AJAX)必須依賴Javascript在客戶端進行支持。隨著引擎如V8和框架如Node.js的發展,及其事件驅動及非同步IO等特性,JavaScript逐漸被用來編寫伺服器端程序。
㈡ C語言中的介面是什麼它和抽象類有什麼區別
把stdio.h庫比喻成一個黑箱子,printf就是它的其中一個介面。通過介面你可以使用箱子里的某個功能(在這里是輸出字元)而不用去關心printf的實現,死鑽stdio.h里的亂七八糟的原理。
類(不是說抽象類)是C++的東西,比如車類,由自身屬性(顏色,重量什麼的)和行為(前進,左轉等)所構成,有點擬人的感覺。你只能讓車做行為而改變自己屬性(前進撞牆了等)而不能直接改變它的屬性(自動改變顏色?)還有其他什麼繼承就不羅嗦了。
抽象類是類的其中一種特殊的類。
㈢ 對象模型是什麼
它是將整個地理空間視為一個空域,將地理現象和空間實體作為獨立的對象分布在空域中。
根據其空間特徵,將其劃分為點、線、面、體四個基本對象,每個對象對應一組相關屬性。對象也可以由其他分離的對象來維護,例如點、線、面和體積的拓撲關系。
對象模型技術是GE對象模型技術提出的一套系統開發技術。基於面向對象的思想,通過對問題的抽象,構造了一組相關的模型。這些模型描述了現實世界中的「類與對象」以及它們之間的關系,表示了目標系統的靜態數據結構,從而全面地捕獲了問題空間的信息。
對象模型的特點如下
對象模型技術將分析中接收到的信息構造為三種模型,即對象模型、功能模型和動態模型。這三個模型從不同的角度對系統進行了描述,分別著眼於系統的一個方面,並結合起來形成了一個完整的系統描述。形象地說,功能模型定義「做什麼」,狀態模型定義「什麼時候做」,對象模型定義「向誰做」。
㈣ 大學計算機系幾年級學js
大學計算機系一年級學會js(JavaScript),JavaScript基於原型編程、多範式的動態腳本語言,並且支持面向對象、命令式、聲明式、函數式編程範式。
主要功能:
1.嵌入動態文本於HTML頁面。
2.對瀏覽器事件做出響應。
3.讀寫HTML元素。
4.在數據被提交到伺服器之前驗證數據。
5.檢測訪客的瀏覽器信息。控制cookies,包括創建和修改等。
6.基於Node.js技術進行伺服器端編程。
語言組成:
ECMAScript,描述了該語言的語法和基本對象。
文檔對象模型(DOM),描述處理網頁內容的方法和介面。
瀏覽器對象模型(BOM),描述與瀏覽器進行交互的方法和介面。
㈤ C語言可以寫游覽器程序嗎類似IE這樣的
當然可以,針對瀏覽器這種與系統緊密結合的軟體,用C語言來實現是可以的,因為現在大部分操作系統都是C/C++實現的,包括佔有市場率最高的windows或者開源作品的代表Linux操作系統都是C/C++工程的結果,所以毫無疑問,用C實現瀏覽器是可行的,但是現在的流行的趨勢面向對象,而C是面對過程的語言,估計C++更為合適!!
㈥ 什麼是瀏覽器對象模型它包含哪些對象
但是瀏覽器對象我是男,我感覺它包含的那些很多。
㈦ C語言打開一個網頁,用指定瀏覽器
ShellExecute 第三個參數指定瀏覽器的執行文件全名;第四個參數指定網址。例如用IE打開www..com:
ShellExecute(0, "open", "C:\\Program Files\\Internet Explorer\\iexplore.exe", "http://www..com", NULL, SW_SHOW);
一般瀏覽器都支持網址參數。如果某瀏覽器顯示默認主頁,說明該瀏覽器不支持網址參數。
㈧ 什麼是BOM(瀏覽器對象模型)
DOM:(Document Object Model) 文檔對象模型。BOM:(Browser Object Mode) 瀏覽器對象模型。從上面的對比中,可以很清晰的看出,BOM與DOM的最大區別既是B(Browser)和D(Document)的區別,那Browser和Document有什麼差別呢,從下面的一張圖上看,DOM的根節點是document。經常編寫JavaScript代碼,也許你會想到window對象,為啥DOM裡面沒有window,這就是BOM與DOM的區別了,window是JavaScript的頂端對象之一,它是隸屬於瀏覽器層次的,它獨立於文檔內容與瀏覽器之間。BOM解析:1. BOM是browser object model的縮寫,簡稱瀏覽器對象模型 2. BOM提供了獨立於內容而與瀏覽器窗口進行交互的對象 3. 由於BOM主要用於管理窗口與窗口之間的通訊,因此其核心對象是window 4. BOM由一系列相關的對象構成,並且每個對象都提供了很多方法與屬性 5. BOM缺乏標准,JavaScript語法的標准化組織是ECMA,DOM的標准化組織是W3C 6. BOM最初是Netscape瀏覽器標準的一部分BOM結構圖window對象是BOM的頂層(核心)對象,所有對象都是通過它延伸出來的,也可以稱為window的子對象。由於window是頂層對象,因此調用它的子對象時可以不顯示的指明window對象,例如下面兩行代碼是一樣的:[code]document.write("test");
㈨ VC下使用COM實現和IE瀏覽器交互的幾種方法
IE實例遍歷實現
---- 首先我們來看系統是如何知道當前有多少個IE的實例在運行。
----
我們知道在Windows體系結構下,一個應用程序可以通過操作系統的運行對象表來和這些應用的實例進行交互。但是IE當前的實現機制是不在運行對象表中進行注冊,所以需要採用其他的方法。我們知道可以通過ShellWindows集合來代表屬於shell的當前打開的窗口的集合,而IE就是屬於shell的一個應用程序。
---- 下面我們描述一下用VC實現對當前
IE實例的進行遍歷的方法。IShellWindows是關於系統shell的一個介面,我們可以定義一個如下的介面變數:
SHDocVw::IShellWindowsPtr m_spSHWinds;
然後創建變數的實例:
m_spSHWinds.CreateInstance
(__uuidof(SHDocVw::ShellWindows));
通過IShellWindows介面的方法GetCount
可以得到當前實例的數目:
long
nCount = m_spSHWinds- >GetCount();
通過IShellWindows介面的方法Item
可以得到每一個實例對象
IDispatchPtr
spDisp;
_variant_t
va(i, VT_I4);
spDisp
= m_spSHWinds->Item(va);
然後我們可以判斷實例對象是不是
屬於IE瀏覽器對象,通過下面的語句實現:
SHDocVw::IWebBrowser2Ptr
spBrowser(spDisp);
assert(spBrowser
!= NULL)
----在得到了IE瀏覽器對象以後,我們可以調用IWebBrowser2Ptr介面的方法來得到當前的文檔對象的指針:
MSHTML::IHTMLDocument2Ptr spDoc(spBrowser->GetDocument());
----
然後我們就可以通過這個介面對這個文檔對象進行操作,比如通過Gettitle得到文檔的標題。
----
我們在瀏覽網路的時候,一般總會同時開很多IE的實例,如果這些頁面都是很好的話,我們可能想保存在硬碟上,這樣,我們需要對每一個實例進行保存,而如果我們採用上面的原理,我們可以得到每一個IE的實例及其網頁對象的介面,這樣就可以通過一個簡單的程序來批量的保存當前的所有打開的網頁。採用上面介紹的方法實現了對當前IE實例的遍歷,但是我們希望得到每一個IE實例所產生的事件,這就需要通過DLL的機制來實現。
---- 3.和IE相綁定的DLL的實現
----
我們介紹一下如何建立和IE進行綁定的DLL的實現的過程。為了和IE的運行實例進行綁定,我們需要建立一個能夠和每一個IE實例進行綁定的DLL。IE的啟動過程是這樣的,當每一個IE的實例啟動的時候,它都會在注冊表中去尋找這個的一個CLSID,具體的注冊表的鍵位置為:
HKEY_LOCALL_MACHINE\SOFTWARE\Microsoft\Windows
\CurrentVersion\Explorer\Browser Helper Objects
----
當在這個鍵位置下存在CLSIDs的時候,IE會通過使用CoCreateInstance()方法來創建列在該鍵位置下的每一個對象的實例。注意對象的CLSIDs必須用子鍵而非名字值的形式表現,比如{DD41D66E-CE4F-11D2-8DA9-00A0249EABF4}
就是一個有效的子鍵。我們使用DLL的形式而非EXE的形式的原因是因為DLL和IE實例運行在同一個進程空間裡面。每一個這種形式的DLL必須實現介面IObjectWithSite,其中方法SetSite必須被實現。通過這個方法,我們自己的DLL就可以得到一個指向IE
COM對象的IUnknown的指針,實際上通過這個指針我們就可以通過COM對象中的方法QueryInterface來遍歷所有可以得到的介面,這是COM的基本的機制。當然我們需要的只是IWebBrowser2這個介面。
----
實際上我們建立的是一個COM對象,DLL只不過是COM對象的一種表現形式。我們建立的COM對象需要建立和實現的方法有:
----1.
IOleObjectWithSite介面的方法SetSite必須實現。實際上IE實例通過這個方法向我們的COM對象傳遞一個介面的指針。假設我們有一個介面指針的變數,不妨設為:
----CComQIPtr< IWebBrowser2, &IID_IWebBrowser2 >
m_myWebBrowser2;
----
我們就可以在方法SetSite中把這個傳進來的介面指針賦給m_myWebBrowser2。
2. 在我們得到了指向IE
COM對象的介面後,我們需要把自己的DLL和IE實例所發生的事件相關連,為了實現這個目的,需要介紹兩個介面:
----(1)
IConnectionPointContainer。這里使用這個介面的目的是用來根據它得到的IID來建立和DLL的一個特定的連接。比如我們可以進行如下的定義:
CComQIPtr< IConnectionPointContainer,
&IID_IConnectionPointContainer
>
spCPContainer(m_myWebBrowser2);
----然後,我們需要把所有IE中發生的事件和我們的DLL進行通訊,可以使用
IConnectPoint。
----(2)
IConnectPoint。通過這個介面,客戶可以對連接的對象開始或者是終止一個advisory循環。IConnectPoint有兩個主要的方法,一個為Advice,另一個為Unadvise。對於我們的應用來說,Advise是用來在每一個IE發生的事件和DLL之間建立一個通道。而Unadvise就是用來終止以前用Advise建立的通知關系。比如我們可以定義IConnectPoint介面如下:
CComPtr< IConnectionPoint > spConnectionPoint;
----
然後,我們要使所有在IE實例中發生的事件和我們的DLL相關,可以使用如下的方法:
hr = spCPContainer->FindConnectionPoint(
DIID_DWebBrowserEvents2, &spConnectionPoint);
----然後我們通過IConnectPoint介面的方法Advice使每當IE有一個新的事件發生的時候,都能夠讓我們的DLL知道。可以用如下的語句實現:
hr = spConnectionPoint- >Advise(
(IDispatch*)this, &m_dwIDCode);
----在把IE實例中的事件和我們的DLL之間建立聯系以後,我們可以通過IDispatch介面的Invoke()方法來處理所有的IE的事件。
----3.
IDispatch介面的Invoke()方法。IDispatch是從IUnknown中繼承的一個介面的類型,通過COM介面提供的任何服務都可以通過IDispatch介面來實現。IDispatch::Invoke的工作方式同vtbl幕後的工作方式是類似的,Invoke將實現一組按索引來訪問的函數,我們可以對Invoke方法進行動態的定製以提供不同的服務。Invoke方法的表示如下:
STDMETHOD(Invoke)(DISPID dispidMember,REFIID
riid, LCID lcid, WORD wFlags,
DISPPARAMS * pdispparams, VARIANT * pvarResult,
EXCEPINFO * pexcepinfo, UINT * puArgErr);
----其中,DISPID是一個長整數,它標識的是一個函數。對於IDispatch的某一個特定的實現,DISPID都是唯一的。IDispatch的每一個實現都有其自己的IID,這里dispidMemeber實際上是可以認為是和IE實例所發生的每一個事件相關的方法,比如:DISPID_BEFORENAVIGATE2,DISPID_NAVIGATECOMPLETE2等等。這個方法中另外一個比較重要的參數是DISPPARAMS,它的結構如下:
typedef struct tagDISPPARAMS
{
VARIANTARG*
rgvarg;
//VARIANTARG是同VARAIANT相同的,可以在
//OAIDL.IDL中找到。所以實際上rgvarg是一個參數數
//組
DISPID* rgdispidNameArgs; //命名參數的DISPID
unsigned
int
cArgs; //表示數組中元素的個數
unsigned
int
CnameArgs; //命名元素的個數
}DISPPARAMS
----要注意的是每一個參數的類型都是VARIANTARG,所以在IE和我們DLL之間可以傳遞的參數類型的數目是有限的。只有那些能夠被放到VARIANTARG結構中的類型才可以通過調度介面進行傳遞。比如對於事件DISPID_NAVIGATECOMPLETE2來說:第一個參數表示IE在訪問的URL的值,類型是VT_BYREF|VT_VARIANT。注意DISPID_NAVIGATECOMPLETE2等DISPID已經在VC中被定義,我們可以直接進行使用。如上說述,我們在方法Invoke中可以得到所有IE實例所發生的事件,我們可以把這些數據放到文件中進行事後的分析,也可以放到一個列表框中實時的顯示。
---- 4.微軟的HTML文檔對象模型和應用分析
----
下面我們來看如何得到網頁文檔的介面:網頁文檔的介面為IHTMLDocument2,可以通過調用IE
COM對象的get_Document方法來得到網頁的介面。使用如下的語句:
hr = m_spWebBrowser2- >get_Document(&spDisp);
CComQIPtr< IHTMLDocument2,
&IID_IHTMLDocument2 > spHTML;
spHTML = spDisp;
----
這樣我們就得到了網頁對象的介面,然後我們就可以對網頁進行分析,比如通過IHTMLDocument2提供的方法get_URL我們可以得到和該網頁相關的URL的地址值,通過get_forms方法可以該網頁中所有的Form對象的集合。實際上W3C組織已經制定了一個DOM(Document
Objec
Model)標准,當然這個標准不僅僅是針對HTML,同時還是針對XML制定的。W3C組織只是定義了網頁對象的介面,不同的公司可以採用不同的語言和方法進行具體的實現。按照W3C組織定義的網頁對象被認為是動態的,即用戶可以動態的對網頁對象裡面所包含的每一個對象進行操作。這里的對象可以是指一個輸入框,也可以是圖象和聲音等對象。同時按照W3C的正式文檔的說明,網頁對象是可以動態增加和刪除的。事實上,很少有廠商實現了DOM定義的所有功能。微軟對網頁對象的定義也基本上是按照這個標准實現的。但是當前的介面還不支持動態的增加和刪除元素,但是可以對網頁中的基本元素進行屬性的修改。比如IHTMLElementCollection表示網頁中一些基本的元素的集合,IHTMLElement表示網頁中的一個基本的元素。而象IHTMLOptionElement介面就表示一個特定的元素Option。基本的元素都有setAttribute和geAttribute方法來動態的設置和得到元素的名稱和值。
----
較為常見的一個應用是我們能夠分析網頁中是否有需要填寫的Forms,如果這個網址的Forms以前已經填寫過而且數據我們已經保存下來的話,我們就可以把數據自動放到和該URL下的Forms的相關的位置中去。另外,我們可以總結網頁上需要填寫的Form的數據項,先對這些數據項進行賦值,以後碰到有相同的數據項的時候就自動把我們賦值的內容填寫進去。實際上Form是對象,Form中包含的元素,比如INPUT,OPTION,SELECT等類型的輸入元素都是對象。
----
另外一個可以想到的應用是自動對網頁中的文本進行翻譯,因為我們可以修改網頁中任何對象的屬性,所以我們可以把裡面不屬於本國語言的部分自動翻譯成本國語言,當然真正的實現還要靠自然語言理解方面技術的突破,但是IE瀏覽器的介面和對象的形式使我們能夠靈活的控制整個IE,無論是從事件對象還是到網頁對象。
㈩ 用C語言獲取瀏覽器地址欄信息
你是代理伺服器,要獲取瀏覽器地址,等瀏覽器按照代理協議把地址傳給你就是了。我說的對嗎?
另外,windows的圖形是寫到內核里的,linux的圖形是獨立在內核之外的,如果瀏覽器有介面還好,沒有介面,就死了這條心吧。