js文件中的javascript替换字符串

js文件中的javascript替换字符串,javascript,replace,Javascript,Replace,好的,我还有一个问题 我有一个js文件需要包含在我的页面上(我没有权限编辑这个js文件) 在javascript中有一个函数,它有一行代码,我需要在其中编辑一个变量 让我们假设: 代码: 我需要在sid= 例如,我变成: 代码: 我加了一句:AlssfIT_ 有什么办法可以做到这一点吗? 我试过类似的东西 代码: 就在我“包含”js文件之后,但实际上不起作用请尝试regex:(未测试) 我认为你做得不对。如果通知是全局空间中的一个变量,则可以正常替换它 window.someObject.not

好的,我还有一个问题 我有一个js文件需要包含在我的页面上(我没有权限编辑这个js文件)

在javascript中有一个函数,它有一行代码,我需要在其中编辑一个变量

让我们假设:

代码:

我需要在sid= 例如,我变成: 代码:

我加了一句:AlssfIT_

有什么办法可以做到这一点吗? 我试过类似的东西 代码:

就在我“包含”js文件之后,但实际上不起作用

请尝试regex:(未测试)


我认为你做得不对。如果通知是全局空间中的一个变量,则可以正常替换它

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);
});
} )()