почему вы не используете это:
var script = refreshChat.toString();
script.replace('&method=chat');','&method=chat');mycoolhijecfunc();')
refreshChat = eval('('+script+')')
, где mycoolhijecfunc
- это функция, которая добавляет смайлики.
получил это из путаницы в источнике TWpro , я был ошеломлен, увидев, как это работает, я изменил его, обычно это:
var modify_function = function (obj, method, options) {
try {
//if (console && console.log) console.log("TW Pro: Modifying method " + method);
if (!obj || !obj[method]) return;
var func = obj[method].toString();
for (var i=3; i<arguments.length; i++) {
if (arguments[i] && arguments[i].length > 1) {
var replacement = arguments[i][1],
arg_opts = arguments[i][2] || {};
if (typeof replacement == "function") {
replacement = "(" + replacement.toString() + ")()";
}
if (arg_opts.catch_errors) {
replacement = ";try{" + replacement + "}catch(twpro_exception){window.twpro_debug.log(twpro_exception,'method " + method + "')}";
}
if (arg_opts.escape) {
replacement = replacement.replace(/\$/g, "$$$$");
}
switch (arg_opts.pos) {
case "L":
replacement += "$&";
break;
case "R":
replacement = "$&" + replacement;
break;
}
func = func.replace(arguments[i][0], replacement);
}
}
//self.fncs.push('"'+method+'"', func);
obj[method] = eval("(" + func + ")");
if (options && options.bind) {
obj[method] = obj[method].bind(options.bind);
}
} catch (e) {
twpro_debug.log("TW Pro failed to modify function " + method + ": " + e);
}
};