❶ 谷歌瀏覽器怎麼不能設置安裝路徑
一、由於Chrome谷歌瀏覽器在安裝時不可以選擇安裝路徑,所以需默認安裝完成之後再進行轉移。
1、下載谷歌瀏覽器到本地磁碟,然後點擊安裝;
2、默認安裝好後,在桌面會自動創建谷歌瀏覽器快捷方式,滑鼠移到谷歌甫骸顛繳郯劑奠烯訂樓瀏覽器快捷方式上,點擊滑鼠右鍵,點擊【屬性】選項進入;
3、找到起始位置後,可以看到默認安裝在c盤,復制起始位置,然後打開要安裝瀏覽器目錄磁碟(D盤為例);
4、把C盤下Chrome谷歌瀏覽器安裝目錄下所有文件剪切到要安裝的盤里(D盤為例);
5、現在再點擊桌面的谷歌瀏覽器快捷方式,然後點擊刪除快捷方式;
6、進入D盤Chrome谷歌瀏覽器安裝目錄下,將滑鼠移到谷歌瀏覽器圖標上,點擊右鍵創建新的谷歌瀏覽器快捷方式至桌面即可;
❷ 如何設置chrome可以調用sqlite
通過HTML5的方式就可以,下面是示例代碼:
用HTML5
API來操作本地SQLite資料庫的例子:
HTML代碼:
1. <!DOCTYPE
html>
2. <head>
3. <meta
charset="UTF-8">
4. <title>使用HTML5本地資料庫DEMO</title>
5. <script type="text/javascript"
src="js/operateDB.js"></</script>
6. </head>
7.
8. <body
onload="init();">
9. <h1>使用HTML5本地資料庫DEMO</h1>
10. <table>
11.
<tr><td>姓名:</td><td><input
type="text"
id="name"></td></tr>
12.
<tr><td>資料:</td><td><input
type="text"
id="info"></td></tr>
13.
<tr>
14.
<td></td>
15.
<td><input
type="button" value="保存"
onclick="saveData();"></td>
16.
</tr>
17. </table>
18. <hr>
19. <table id="datatable"
border="1"></table>
20. <p
id="msg"></p>
21. </body>
javascript 封裝了許多方法,比如保存數據到資料庫,更新,同步下方的列表等。
1.
5.
6. //這個是下方的表格元素
7. var datatable = null;
8.
9. //創建一個資料庫對象
10. //4個參數分別是 資料庫名,版本號,資料庫的描述,資料庫大小
11. var db = openDatabase('MyData','','My
Database',102400);
12.
13. //init()方法,用於頁面下方表格元素的引用,並且顯示所有的資料庫記錄
14. function init(){
15.
//取得下方的表格元素,並且賦值給全局變數
16.
datatable = document.getElementByIdx_x("datatable");
17.
18.
//顯示所有已經在資料庫中存儲的記錄
19.
showAllData();
20. }
21.
22.
//removeAllData()方法,用於移除所有的表格中的當前顯示數據(它並不去除資料庫記錄)
23. function removeAllData(){
24.
//首先,它將<table>下面的所有子元素全部清除
25.
//所以,這里它對於datatable組件進行遍歷
26.
for(var
i=datatable.childNodes.length-1;i>=0;i--){
27.
datatable.removeChild(datatable.childNodes(i));
28.
}
29.
30.
//全部去除之後,現在需要顯示這個表頭部分<tr>裡面有多個<th>
31.
//創建表頭行到文檔樹中
32.
var tr= document_createElement_x('tr');
33.
//表頭行的第一個表頭
34.
var th1=document_createElement_x('th');
35.
//表頭行的第二個表頭
36.
var th2=document_createElement_x('th');
37.
//表頭行的第三個表頭
38.
var th3=document_createElement_x('th');
39.
//設置這3個表頭的文本
40.
th1.innerHTML="姓名";
41.
th2.innerHTML="資料";
42.
th3.innerHTML="時間";
43.
//將這些表頭依次放在表頭行中
44.
tr.a(th1);
45.
tr.a(th2);
46.
tr.a(th3);
47.
//將這個新創建的表頭行掛到表格中
48.
datatable.a(tr);
49. }
50.
51.
//構建指定資料庫行的數據對應的HTML文本。傳入參數:資料庫結果集中的某一行記錄
52. function showData(row){
53.
//構建一個錶行用於取得當前所要的信息
54.
var tr= document_createElement_x('tr');
55.
//創建第一列,這一列是姓名
56.
var td1=document_createElement_x('td');
57.
//填充第一列的信息為該行的name
58.
td1.innerHTML=row.name;
59.
//創建第二列,這一列是留言
60.
var td2=document_createElement_x('td');
61.
//填充第一列的信息為該行的message
62.
td2.innerHTML=row.info;
63.
//創建第三列,這一列是日期
64.
var td3=document_createElement_x('td');
65.
//創建一個日期對象
66.
var t = new Date();
67.
t.setTime(row.time);
68.
//將日期的標准形式和國際化日期形式分別設置給當前列
69.
td3.innerHTML=t.toLocaleString()+" "+t.toLocaleTimeString();
70.
//吧這三列掛到當前行中
71.
tr.a(td1);
72.
tr.a(td2);
73.
tr.a(td3);
74.
//讓這個表格在後面加上這一行
75.
datatable.a(tr);
76. }
77.
78. //這個函數用於顯示所有的行到表格中,這些行是從資料庫中拿出來的
79. function showAllData(){
80.
//開啟SQLite資料庫事務,它用一個回調函數作為參數表明要執行的語句
81.
db.transaction(function(tx){
82.
//首先它創建一個資料庫表,裡面有3個欄位
83.
tx.executeSql('CREATE TABLE IF NOT EXISTS InfoData(name TEXT,info
TEXT,time INTEGER)',[]);
84.
//創建一個查詢語句用來查詢資料庫表的所有記錄(這個由於是所有查詢,所以不需要預編譯語句和參數 (第二個參數))
85.
//然後定義了一個回調函數,表明對於結果集的處理
86.
tx.executeSql('SELECT * FROM InfoData',[],function(tx,rs){
87.
88.
//對於結果集,首先,在獲取它之前移除頁面上的<table>的所有數據
89.
removeAllData();
90.
//遍歷結果集,對於每一行,依次調用showData來在table上創建對於的html文本
91.
for(var i=0;i<rs.rows.length;i++){
92.
//對於item(i),也就是某一行記錄,我們顯示其內容到頁面的表格中(構建對應的HTML片斷)
93.
showData(rs.rows.item(i));
94.
}
95.
});
96.
}
97.
98.
);
99. }
100.
101.
//這個函數用於添加一條記錄到資料庫中,這些信息有些是從頁面獲得的,有些是系統生成的。
102. function addData(name,info,time){
103.
//開啟一個資料庫事務
104.
//回調函數是一個有參數的插入語句,可以看到我們插入到表InfoData中,插入的內容也就是參數傳遞進來的內容
105.
db.transaction(function(tx){
106.
107.
//插入的語句是個模板語句
108.
//插入成功的回調就是在控制台上輸入一行日誌
109.
tx.executeSql('INSERT INTO InfoData VALUES(?,?,?)' ,
[name,info,time],function(tx,rs){
110.
console.log("成功保存數據!");
111.
},
112.
//插入失敗的回調就是在控制台上輸入一行錯誤日誌
113.
function(tx,error){
114.
console.log(error.source+"::"+error.message);
115.
});
116.
}
117.
118.
);
119. }
120.
121. //保存用戶的當前輸入,這個是作為點擊頁面上」保存「按鈕的事件處理函數
122. function saveData(){
123.
//從HTML頁面中取得2個輸入框的文本
124.
var name=document.getElementByIdx_x('name').value;
125.
var info=document.getElementByIdx_x('info').value;
126.
//得到當前的系統時間 www.2cto.com
127.
var time= new Date().getTime();
128.
//將用戶名,用戶信息,當前時間存到資料庫中
129.
addData(name,info,time);
130.
//更新下方<p id="msg">的表格顯示
131.
showAllData();
132. }
❸ 新版Chrome沒有Flash怎麼辦
方法1、在你的chrome54地址欄中輸入 chrome://components/ ,在裡面找到flash player 一項,點擊更新,這樣你的chrome會自動下載dll文件。
但是!此法需要科學上網或者修改HOSTS!而且因為chrome的許可權問題,使用switchy omega 此類插件沒法達成效果,必須開全局科學上網才可以。
方法2、我們直接手動下載好ppapi 的最新flash,提取文件後放入對應的位置。
從以下官方鏈接下載最新版的ppapi的flash完整包,各種方法獲取比如sandboxie獲取到dll文件並且提取出來,重命名好後粘貼到你的用戶文件夾對應位置。
注意:dll文件的路徑是在你的chrome瀏覽器 User Data 文件夾下,可以用搜索的方式找到。(忽略截圖中路徑的前半部分,只需要找到你的 User Data 文件夾即可)
方法3、你直接安裝 ppapi 的flash player,但是對於一些綠色版便攜版,還是得自己動下手。
通過上面的方法就可以成功的給chrome安裝Falsh插件了!
❹ 如何開發Chrome擴展程序
開始
為了著手創建你的擴展程序,你只需要為你的擴展創建一個文件夾。程序所必須的文件只有manifest.json.,不過也推薦准備一些圖片用作圖標,和至少一個JavaScript以提供功能。一般來說還會包含HTML文檔、樣式表、圖片等等其他的資源。
Manifest文件
每個擴展都必須在其根目錄下包含一個manifest.json文件。
這個文件裡面聲明了擴展的名稱、版本、許可權、設置選項和其他的一些和擴展相關的元數據。Manifest v1早在Chrome 18便已被棄用,而且會根據這個時間表逐漸淘汰使用Manifest v1的擴展。如果你在參考一些舊擴展的Manifest文件的話,請確認添加"manifest_version": 2.
Google發布的Manifest v2中支持的域
後台頁
大多數擴展都會在其manfiest.json文件內有這樣的內容:
1
2
3
4
5
{
"background": {
"scripts": ["index.js", "other.js"]
}
}
這一段代碼指定了兩個需要被載入而且要保持在後台運行的腳本,這些腳本會在擴展的後台頁運行。後台頁是一個在擴展的進程中生成並運行的頁面,存在時間會和擴展的生命周期等長。後台頁可用來作為擴展的其他界面的控制器,用來維護某個狀態或者保持某些活動。如果你需要用後台頁來聲明一些標記來用,可以把一個HTML文件名指定給page選項。事件頁
後台頁會從擴展被載入的時候被裝載,而且會一直留在內存里。這是因為如果有些狀態需要被長時間維護,或者需要被擴展的其他部分訪問。但是如果你沒有這個需求,那麼應該盡可能的使用事件頁。事件頁其實只是相當於一個包含了」persistent」: false條目的後台頁,這一行語句告訴Chrome可以不需要把後台頁保留在內存里。相對來說,事件頁也會在最開始被裝載,但是一旦指定的腳本運行完畢,事件頁便會從內存卸載,而且會在需要的時候被再次載入(比如用來回應某些操作)。以上便是在為擴展添加功能之前所需要知道的。
交互
利用Google提供的大量API,你的擴展與瀏覽器交互或者為用戶提供功能都變得方便。
chrome.* APIs
Chrome的程序和擴展程序都非常喜歡調用chrome.* APIs,這些API可以讓你通過不同的方式來操控瀏覽器,API通常會在後台腳本裡面被調用,這是我找到的一些常用API:
chrome.tabs 標簽頁:新建、刷新、關閉、訪問和操控標簽頁
chrome.history 歷史:訪問用戶瀏覽歷史
chrome.bookmarks 書簽:添加、編輯、移除和搜索用戶書簽
chrome.events 事件:監聽或者管理瀏覽器發生的事件
chrome.commands 命令:添加或者改變鍵盤命令
chrome.contextMenus 右鍵:添加條目到右鍵下文菜單
chrome.omnibox 多功能框(地址欄):添加多功能框關鍵字,使用戶可以向擴展發送指令或者激活擴展
其他API
Chrome程序和擴展程序通常也會用到其他的API,包括如本地存儲、地理位置、緩存、畫布等新型的HTML5 API。你也可以用普通的JavaScript或者webkit API來實現。聲明許可權
有些Chrome API的功能必須要在manifest.json文件中聲明相關許可權才能被調用,通過在permissions 域中把值設成相應許可權名稱,或者是通識符組成的數組。
1
2
3
4
5
6
7
8
{
"permissions": [
"contextMenus",
"tabs",
"https://google.com/*",
"https://developer.mozilla.org/*"
]
}
在這一段聲明代碼中,數組中的頭兩個字元串是分別用來為chrome.contextMenus和chrome.tabs 的API授權的,最後的兩個字元串則是用來匹配以 https://google.com/ 和 https://developer.mozilla.org/ 開頭的地址。用戶界面
Chrome擴展的用戶界面有著嚴格的限制,但是根據擴展的需要卻可以有不同形式的界面。瀏覽器按鈕[a]
瀏覽器按鈕允許你在右上角放置一個的16 x 16像素的圖標,如果擴展應用的界面是全局的,而不是針對某個頁面,那就應該使用瀏覽器操作。如果要使用瀏覽器按鈕,你必須在manifest.json中的browser_action域中做如下聲明:
1
2
3
4
5
6
7
8
9
10
{
"browser_action": {
"default_icon": {
"19": "images/icon19.png",
"38": "images/icon38.png"
},
"default_title": "tooltip text here",
"default_popup": "popup.html"
}
}
一個瀏覽器按鈕可以有一個圖標、提示、文字標記和一個彈出內容,文字標記可以將極少的文字(4字元)動態的覆蓋在瀏覽器操作的圖標上,你也可以通過chrome.browserActionAPI來對瀏覽器按鈕相關的事件做出反應。頁面按鈕
頁面按鈕允許你在多功能欄(地址欄)右邊添加一個按鈕,其實他和瀏覽器按鈕很相似,區別之處在於頁面按鈕是專門用來處理某些指定的頁面的。頁面按鈕必須在manfiest.json中聲明, page_action域的使用和瀏覽器按鈕一樣。頁面按鈕可以通過chrome.pageAction API控制,可以在不同的標簽頁中靈活的顯示或者隱藏。頁面按鈕也可以設置圖標、提示和彈出內容,和瀏覽器按鈕不同的是其沒有文字標記功能。右鍵菜單
右鍵菜單是另一個提供用戶界面,方便用戶和擴展交互的方式。Chrome的右鍵菜單通過右鍵激活,但根據激活內容的變化,菜單內容也會做相應改變。
chrome.contextMenusAPI允許你向為不同內容激活的右鍵菜單添加項目,若要使用此API,則在manifest.json文件中聲明相應的contextMenus許可權。
目前可用的激活內容有:
all, page, frame, selection, link, editable,image, video, audio
對應:所有內容、頁面、框架、選擇、鏈接、可編輯、圖像、視頻、音頻,以下這個例子需要contextMenus 和tabs許可權,他可以使擴展為右鍵菜單添加一個根項目,然後添加一個子菜單,用來復制當前的頁面到一個新選項卡。[b]
1
2
3
4
5
6
7
8
9
10
11
12
13
var root = chrome.contextMenus.create({
title: 'MyExtension',
contexts: ['page']
}, function () {
var subMenu = chrome.contextMenus.create({
title: 'Duplicate Tab'
contexts: ['page'],
parentId: root,
onclick: function (evt) {
chrome.tabs.create({ url: evt.pageUrl })
}
});
});
多功能框
Chrome把地址欄/搜索欄稱為多功能框,通過chrome.omnibox API,他可以讓擴展有另一個界面。通過API 可以設置一個特定的激活字元串,當這個字元串被鍵入多功能框時擴展便可以對其做出反應。在manifest.json中做如下聲明:
1
2
3
4
5
{
"omnibox": {
"keyword": "ext-"
}
}
這部分代碼會把ext-作為激活字元串,當用戶鍵入ext-並按下SPACE鍵或者TAB鍵時擴展會被激活。激活字元串必須通過manifest.json文件聲明,故也不能通過JavaScript來更改。用戶可以通過右鍵單擊多功能框—–修改搜索引擎來更改。激活字元串是大小寫敏感的,同時想為一個擴展聲明多個激活字元串也是不可以的。
chrome.omnibox API可以讓你添加激活字元串被鍵入之後的修改或者輸入的事件處理器。選項頁面
選項頁面是一個的常見的用戶界面,在chrome://extensions里可以通過單擊擴展右邊的選項按鈕來打開。通常這個頁面會和存儲API結合使用,以用來在計算機上為用戶保存設置。而使用腳本通過chrome.tabsAPI來打開選項頁面也是可以的。頁面重載
頁面重載允許你完全替代一個以下指定頁面(一個擴展程序只能重載一個頁面)
書簽管理器
通過訪問chrome://bookmarks或者Chrome菜單打開的頁面
歷史
通過訪問chrome://history或者Chrome菜單打開的頁面
新選項卡
通過訪問chrome://newtab或者新建選項卡出現的頁面
這些被替換的頁面必須在manifest.json文件中如下聲明chrome_url_overrides域:
1
2
3
4
5
{
"chrome_url_overrides": {
"bookmarks": "newBookmarkManager.html"
}
}
內容腳本
內容腳本是和你的擴展有關,在網頁中運行的腳本。這個腳本可以讓你訪問頁面里相應的DOM元素,你可以像這樣在manifest.json里通過指定content_scripts域定義一個內容腳本數組:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
{
"content_scripts": [
{
"matches": ["http://www.google.com/*"],
"css": ["custom-google-styles.css"],
"js": ["custom-google-script-1.js", "custom-google-script-2.js"]
},
{
"matches": ["http://*"],
"css": ["global-styles.css"],
"js": ["global-script.js"]
}
]
}
你也可以用通過chrome.tabs API以動態的把JavaScript或者CSS注入網頁。
內容腳本有以下限制:
不能使用chrome.* API (chrome.extension的部分除外)
不能使用由擴展腳本定義的變數或函數
不能使用由網頁所定義的變數或函數
不能使用由其他內容腳本定義的變數或函數
內容腳本可以通過消息傳遞間接的使用chrome.* API,或者是和擴展腳本交互。