JavaScript заменить строку в файле JS - PullRequest
2 голосов
/ 29 января 2012

Хорошо, я получил еще одну проблему У меня есть файл js, который мне нужно включить на мою страницу (у меня нет доступа для редактирования этого файла js)

Внутри этого javascript есть функция, в которой есть строка, в которой мне нужно отредактировать переменную.

допустим:

Код:

var links     = [{"offer_id":"1","title":"Text!","url":"http:\/\/www.site.com\/tracker\/1\/?http:\/\/site.com\/click.php?aff=9917&camp=5626&crt=13346&sid=e6a00014f247fe39de1b_1","footer_text":"text","blank_referrer":"1","active":"1","value":"0.40","creation_time":"1327785202"}];


notice :     '&sid=e6a00014f247fe39de1b_1' 

мне нужно что-то добавить сразу после sid = так что я стал например: Код:

&sid=AlssfIT_e6a00014f247fe39de1b_1 

я добавил: AlssfIT_

есть идеи как этого добиться? я попробовал что-то вроде Код:

str.replace("&sid=","&sid="+kwd); 

сразу после того, как я "включил" файл js, но, очевидно, не работает

Ответы [ 2 ]

2 голосов
/ 29 января 2012

Я думаю, вы поступаете неправильно. Если уведомление - это переменная в глобальном пространстве, вы можете просто заменить ее как обычно.

window.someObject.notice = window.someObject.notice.replace("&sid=","&sid="+kwd); 

Это, конечно, будет работать, только если уведомление - это переменная, к которой можно перемещаться в глобальном пространстве имен и которая не находится внутри замыкания. Он находится внутри замыкания, если имеет var объявление внутри function() {...}

Но, предполагая, что к этой переменной есть глобальный доступ, это будет ваш самый простой способ достичь этого.

Если нет, вы можете попытаться захватить содержимое скрипта и выполнить его с надеждой перезаписать исходный код. Это будет работать только в том случае, если ваш сценарий и извлекаемый сценарий имеют одно и то же происхождение (домен, поддомен, порт, протокол, несколько других вещей) - в противном случае это невозможно из-за _ Одинаковой политики происхождения _

Предполагая, что вы находитесь в одном источнике, вы можете сделать что-то вроде этого (используя jquery для простоты)

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

Нечто подобное может сработать.

0 голосов
/ 29 января 2012

попробуйте регулярное выражение: (не проверено)

myregexp = new RegExp("/&sid=/", "gims");
str.replace(myregexp, "&sid=" + kwd);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...