Window > Preference >
General > Keys
Search word completion
Click Unbind Command button
Search content assist
Change binding to Alt + /
Chrome extension works on separate sandbox environment while it running. This means extension can't call script functions that loaded on page context. Due to a unexpected reason, I found a method that allow extension call functions loaded on page context from extension.
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
<script type="text/javascript">
function helloPage() {
for ( var i = 0; i < 10; i++) {
var div = document.createElement('div');
div.innerHTML = 'hello page ' + i;
document.body.appendChild(div);
}
}
</script>
</head>
<body>
<h3>Test Page</h3>
</body>
</html>
{
"manifest_version": 2,
"name": "Context test",
"description": "Context test",
"version": "0.3.1",
"permissions": ["tabs", "http://*/*", "https://*/*"],
"content_scripts": [{
"matches": ["http://*/*", "https://*/*", "file://*/*"],
"js": ["js/jquery-1.9.1.min.js", "js/init.js", "js/callable.js"],
"run_at": "document_end"
}],
"web_accessible_resources": ["js/callable.js"]
}
function dowork($callback) {
console.log('Begin dowork at ' + new Date());
if($callback && typeof ($callback) == 'function') $callback();
}
$(function () {
console.log('Begin init.js at ' + new Date());
dowork(function () {
console.log('Dynamic load callable.js at ' + new Date());
$.ajax({
async: false,
url: chrome.extension.getURL('js/callable.js'),
dataType: 'script'
});
});
});
(function () {
console.log('Run callable.js at ' + new Date());
console.log('Check jQuery status (loaded in extension context) : ' + (typeof ($) != 'undefined').toString());
if(typeof (helloPage) == 'undefined') {
console.log('helloPage not exist');
} else {
console.log('Execute page function "helloPage()"');
helloPage();
}
})();
Althouth this could inject script into page context, but this may cause some security issue. And it was not the result that I expected, I hope this will be fixed in the future.