これは私が昨日尋ねた質問のフォローアップです。
私はユーザースクリプトを持っています(GreaseMonkeyスクリプトのようなものですが、Chrome用です)。
アイデアは、テキストボックスとボタンをページに追加することです。次に、ユーザーがボタンをクリックすると、処理を実行する機能が開始されます。そのため、テキストボックス、ボタン、関数をページに挿入しましたが、ユーザーがボタンをクリックすると、Chromeコンソールに「UncaughtTypeError:オブジェクトは関数ではありません」と表示されます。したがって、明らかに、私が注入したばかりの関数は表示されません。これonclickは、ボタンのイベントで指定されています。
だから私はこのようなコードを持っています:
initialize();
function initialize() {
var dropDown = document.getElementById("tstGlobalNavigation_ddlChooseProject");
// add a textbox
dropDown.innerHTML = dropDown.innerHTML + " <input type='text' name='txtSearch' style='position:absolute;top:8px;left:800px;width:50px' >";
// add a button
dropDown.innerHTML = dropDown.innerHTML + " <input type='button' name='btnSearch' value='Go' onclick='fn()' style='position:absolute;top:8px;left:860px;width:35px'>";
addScript("var obj = document.getElementById('txtSearch'); "
+ "if (obj != null) { "
+ " var incidentId = document.getElementById('txtSearch').value; "
+ " var currentURL = location.href; "
+ " var splitResult = currentURL.split('/'); "
+ " var projectId = splitResult[4]; "
+ " location.href = 'http://dev.myApp.com/ProductTeam/' + projectId + '/Incident/' + incidentId + '.aspx'; "
+ " }"
, "fn");
}
function addScript(contents, id) {
var head, script;
head = document.getElementsByTagName('head')[0];
script = document.getElementById(id);
if(script != undefined) {
head.removeChild(script);
}
script = document.createElement('script');
script.type = 'text/javascript';
script.id = id;
script.innerHTML = contents;
head.appendChild(script);
}
ここで何が欠けていますか?