js文件中的javascript替换字符串
好的,我还有一个问题 我有一个js文件需要包含在我的页面上(我没有权限编辑这个js文件) 在javascript中有一个函数,它有一行代码,我需要在其中编辑一个变量 让我们假设: 代码: 我需要在sid= 例如,我变成: 代码: 我加了一句:AlssfIT_ 有什么办法可以做到这一点吗? 我试过类似的东西 代码: 就在我“包含”js文件之后,但实际上不起作用请尝试regex:(未测试)js文件中的javascript替换字符串,javascript,replace,Javascript,Replace,好的,我还有一个问题 我有一个js文件需要包含在我的页面上(我没有权限编辑这个js文件) 在javascript中有一个函数,它有一行代码,我需要在其中编辑一个变量 让我们假设: 代码: 我需要在sid= 例如,我变成: 代码: 我加了一句:AlssfIT_ 有什么办法可以做到这一点吗? 我试过类似的东西 代码: 就在我“包含”js文件之后,但实际上不起作用请尝试regex:(未测试) 我认为你做得不对。如果通知是全局空间中的一个变量,则可以正常替换它 window.someObject.not
我认为你做得不对。如果通知是全局空间中的一个变量,则可以正常替换它
window.someObject.notice = window.someObject.notice.replace("&sid=","&sid="+kwd);
当然,只有当notice是一个可在全局命名空间中导航的变量且不在闭包中时,这才起作用。如果它在函数(){…}
但是,假设有全局访问该变量的权限,这将是实现这一点的最简单方法
如果没有,您可以尝试获取脚本的内容并执行它,希望覆盖原始代码只有当您的脚本和正在获取的脚本来自同一来源(域、子域、端口、协议等)时,这才有效-否则,由于“同一来源”策略,这是不可能的
假设您位于同一个原点,您可以这样做(为了简单起见,使用jquery)
像这样的东西可以用。不行。我在加载主文件中的.js文件后添加了它。您是否试图将另一台服务器中的js文件包含到您的服务器中?js不支持regexp的
s
标志,m
不是跨浏览器的,最重要的是,-regexp在这里根本不需要,'因为在这种情况下,您可以简单地编写str.replace(&sid=“,&sid=”+科威特第纳尔)代码>同源策略或跨源资源共享(CORS)-它适用于所有普通浏览器,IE8i在同一台服务器上,只是不同的位置。例如,我的js文件位置不确定如何设置var scriptLocation=$('script#script元素的id').prop('src');correctly@misulicus-如果您知道脚本的位置(该链接不起作用),只需硬编码即可。这是最容易做到的事情。好吧,我现在得到了这样的结果:var kwd=“{keyword}\ux”;var virpath=“{virtual_path}”;(function(){var scriptLocation=virpath+'/tracker/locker.js?guid=74f2464918d5e936';$.get(scriptLocation).done(function(text){var newText=text.replace(“&sid=”,“&sid=”+kwd);eval(newText););})()firebug向我显示了一个错误:$.get(scriptLocation)。done不是一个函数是的,这不起作用。当您有脚本标记时,您不会“包括”js文件。您所做的是告诉浏览器运行页面需要该文件中的代码。浏览器将以自己的速度获取该文件。唯一的保证是页面上的所有脚本都将按照它们出现的顺序执行。
&sid=AlssfIT_e6a00014f247fe39de1b_1
str.replace("&sid=","&sid="+kwd);
myregexp = new RegExp("/&sid=/", "gims");
str.replace(myregexp, "&sid=" + kwd);
window.someObject.notice = window.someObject.notice.replace("&sid=","&sid="+kwd);
( function() {
// First we need the url of the script, we can grab it out of the element directly or it can be hard coded
var scriptLocation = $('script#the-id-of-the-script-element').prop('src');
// Now that we have the location fetch the script again so we can get it as plaintext
// this will usually not do another HTTP request since your browser has it cached
$.get(scriptLocation).done(function(text) { // I prefer the deferred syntax as being more explicit, this is equivalent to $.get(scriptLocation, function(text) {
var newText = text.replace("&sid=","&sid="+kwd);
eval(newText);
});
} )()