要将参数传递给服务器端脚本,请扩展查询字符串:
jsCode.setAttribute('src', 'http://path/to/external/file.js?parameter=' + document.title);
如果您打算将参数传递给返回的脚本,请将onload 处理程序添加到脚本元素:
javascript:(function() {
var jsCode = document.createElement('script');
var parameter = document.title; //Define parameter
jsCode.onload = function() {
// If the function exists, use:
if(typeof special_func == "function") special_func(parameter);
};
jsCode.setAttribute('src', 'http://path/to/external/file.js');
document.body.appendChild(jsCode);
})();
响应脚本(file.js):
function special_func(param){
alert(param);
}
更新/示例
如果您想将(多个)变量传递给响应脚本,请使用以下代码:
javascript:(function() {
var jsCode = document.createElement('script');
var params = ["test", document.title]; //Define parameter(s)
var thisObject = {}; // `this` inside the callback function will point to
// the object as defined here.
jsCode.onload = function() {
// If the function exists, call it:
if (typeof special_func == "function") {
special_func.apply(thisObject, params);
}
};
jsCode.setAttribute('src', 'http://path/to/external/file.js');
document.body.appendChild(jsCode);
})();
http://path/to/external/file.js:
// Declare / Define special_func
var special_func = (function(){
var local_variable = "password";
var another_local_title = "Expected title";
//Return a function, which will be stored in the `special_func` variable
return function(string, title){ //Public function
if (title == another_local_title) return local_variable;
}
})();