独自の form 要素の onsubmit で sendUrl() を指定し、その結果、入力ボックスで指定された URL にページ遷移を行う場合はこんな感じ。もちろん、チェック等の処理は必要不可欠ではあるけど、今回は省略したいと思う。
★「スクリプトを終了」で指定した Javascript
// form 要素を挿入する
var testForm = document.createElement("form");
testForm.onsubmit = "test";
testForm.method = "post";
document.body.insertBefore(testForm, document.body.firstChild);
testForm.addEventListener("submit", sendUrl); // addEventListener で処理先を指定
// 入力ボックスを上記の testForm に生成する
var testInput = document.createElement("input");
testInput.type = "text";
testInput.id = "testInput";
testInput.name = "testInput";
testForm.appendChild(testInput);
// ボタンを上記の testForm に生成する
var testSubmit = document.createElement("input");
testSubmit.type = "submit";
testSubmit.value = "send";
testForm.appendChild(testSubmit);
// submit で送られてきた処理
function sendUrl() {
safari.self.tab.dispatchMessage("open", testInput.value);
}
var testForm = document.createElement("form");
testForm.onsubmit = "test";
testForm.method = "post";
document.body.insertBefore(testForm, document.body.firstChild);
testForm.addEventListener("submit", sendUrl); // addEventListener で処理先を指定
// 入力ボックスを上記の testForm に生成する
var testInput = document.createElement("input");
testInput.type = "text";
testInput.id = "testInput";
testInput.name = "testInput";
testForm.appendChild(testInput);
// ボタンを上記の testForm に生成する
var testSubmit = document.createElement("input");
testSubmit.type = "submit";
testSubmit.value = "send";
testForm.appendChild(testSubmit);
// submit で送られてきた処理
function sendUrl() {
safari.self.tab.dispatchMessage("open", testInput.value);
}
★「グローバルページ」で指定した html 内の Javascript
<!doctype html>
<html lang="en">
<head>
<script type="text/javascript">
function GoTo(evt) {
// 新規タブで開く場合
safari.application.activeBrowserWindow.openTab().url = evt.message;
// 同じタブで開く場合
safari.application.activeBrowserWindow.activeTab.url = evt.message;
}
// content_scripts からの受信
safari.application.addEventListener("message", GoTo, false);
</script>
</head>
<body></body>
</html>
<html lang="en">
<head>
<script type="text/javascript">
function GoTo(evt) {
// 新規タブで開く場合
safari.application.activeBrowserWindow.openTab().url = evt.message;
// 同じタブで開く場合
safari.application.activeBrowserWindow.activeTab.url = evt.message;
}
// content_scripts からの受信
safari.application.addEventListener("message", GoTo, false);
</script>
</head>
<body></body>
</html>
ちなみに、url に日本語が含まれる場合、このままでは遷移できないので、上記の sendUrl() 内の testInput.value をエンコードしてやる必要がある。
function sendUrl() {
safari.self.tab.dispatchMessage("open", encodeURI(testInput.value));
}
safari.self.tab.dispatchMessage("open", encodeURI(testInput.value));
}
No comments:
Post a Comment
Note: Only a member of this blog may post a comment.