Захватить входящие параметры URL-адреса, затем передать в iFrame Src с помощью Javascript

Итак, пытаюсь понять, как это сделать с помощью window.location в Javascript. Я отправляю пользователей на наш сайт с добавленным URL-адресом с кодом Google Analytics, который мне нужно передать в iframe src на этой странице. Я предполагаю, что Javascript может это сделать (примечание - я не могу использовать PHP) ...

Вот что я хочу сделать:

Я отправлял пользователей на страницу со всеми данными кампании в такт. Например, пользователь щелкнет по этой ссылке: http://www.xyz.com/index.html?utm_source=Facebook&utm_campaign=Facebook+May&utm_medium=click

Они будут перенаправлены на ту страницу, на которой затем будет этот iFrame. Код на стороне магазина должен будет выбрать utm_source, utm_campaign, utm_medium и включить эти части в IFRAME SRC Итак, этот бит:

<iframe height="960px" frameborder="0" scrolling="no" width="958px" src="http://www.abc.com/minis"></iframe>

теперь становится:

 <iframe height="960px" frameborder="0" scrolling="no" width="958px" src="http://www.abc.com/minis?utm_source=Facebook&utm_campaign=Facebook+May&utm_medium=click"></iframe>

Будем очень признательны за любые предложения javascript. Примечание. Я не могу использовать PHP.

ОБНОВЛЕНИЕ: это работает !! Ура, но теперь мне нужно его немного отредактировать:

Скажем, добавленный URL-адрес был следующим:

http://abc.com/index.html?apple&orange&peach

и мне нужно, чтобы iframe src был этим

 http://xyz.com/minis?orange&peach

Я переместил несколько вещей в скрипте, но теперь захватывает только оранжевый, а не другой атрибут & (персик). пожалуйста, сообщите, есть ли лучший способ работы (без всех параметров, а затем, в зависимости от того, какая ссылка входит, некоторые из & будут неопределенными:

<body>

<script type="text/javascript">

$(function() {

var loc = window.location.toString(),
params = loc.split('&')[1],
params2 = loc.split('&')[2],
params3 = loc.split('&')[3],
params4 = loc.split('&')[4],
params5 = loc.split('&')[5],
params6 = loc.split('&')[6],
  iframe = document.getElementById('myIframe');
alert(iframe.src); 
iframe.src = iframe.src + '?' + params + '&' + params2 + '&' + params3 + '&' + params4+ '&' + params5;
alert(iframe.src); 

});
</script>
<iframe id="myIframe" src="http://www.xyz.com/minis"></iframe>

</body>

person jgrannis    schedule 03.05.2012    source источник
comment
используйте jquery для получения параметров, а затем динамически вставьте новый iframe с тем, что вы хотите. просто   -  person Piotr Kula    schedule 03.05.2012
comment
мой html-код iframe содержит форму внутри, как я могу передать параметр URL-адреса в действие формы iframe? Заранее спасибо   -  person RajKumar Samala    schedule 21.02.2017


Ответы (1)


Этот небольшой фрагмент должен подойти, здесь все, что вам нужно сделать, это взять кусочек после? в виде строки и добавьте ее в исходный код iframe.

var loc = window.location.toString(),
    params = loc.split('?')[1],
    iframe = document.getElementById('myIframe');

iframe.src = iframe.src + '?' + params;​​​​​​​​​​​​​​​​
person GillesC    schedule 03.05.2012
comment
поэтому я собрал здесь, но он не работает должным образом. Признаюсь, Javascript - не моя сильная сторона. jsfiddle.net/GLm5f - person jgrannis; 03.05.2012
comment
у вас неправильный идентификатор, вам не хватает I в верхнем регистре, как в JS, это myIframe, а не myiframe - моя ошибка должна была просто использовать foo без путаницы. - person GillesC; 03.05.2012
comment
хммм ... изменил на ID вместо имени и изменил myIframe, но я все еще не вижу его. Будет ли он отображаться в исходном коде, как только я войду с добавленным кодом? поэтому, если я захожу по этому добавленному URL-адресу Google Analytics, источник представления для iframe src должен иметь добавленный тег? - person jgrannis; 03.05.2012
comment
он не будет работать на скрипке, в окне window.location нет параметра, а также у вас были выбраны mootools в качестве библиотеки на левой панели. jsfiddle.net/GLm5f/2 проверьте журнал, он их захватит, попробуйте, как если бы iframe не работал загрузить внешний контент на скрипку. - person GillesC; 03.05.2012
comment
Я понимаю, что это не будет работать в jfiddle, но я не могу заставить его работать локально при использовании добавленного URL-адреса (локально). - person jgrannis; 03.05.2012
comment
Быстрое предложение - поместите alert(iframe.src); до и после изменения iframe.src, чтобы вы могли видеть, что происходит. - person mike; 03.05.2012
comment
идеально!!! Спасибо. Он просто не отображался в источнике представления, но предупреждение сообщает мне, что оно изменилось! Это фантастика! Спасибо! - person jgrannis; 03.05.2012
comment
на самом деле, у меня уже есть материал после знака вопроса, поэтому мне нужно, чтобы javascript отображался после знака & и не останавливался на втором знаке &. Скажем, добавленный URL-адрес был следующим: http: ///abc.com/index.html? Apple & orange & peach, и мне нужно, чтобы src iframe был таким xyz.com/minis?orange&peach. Я переместил несколько вещей в скрипте, но теперь захватывает только оранжевый, а не другой атрибут & (персик). пожалуйста, порекомендуйте. - person jgrannis; 03.05.2012
comment
Вот что я сделал: var loc = window.location.toString (), params = loc.split ('&') [1], params2 = loc.split ('&') [2], params3 = loc. split ('&') [3], params4 = loc.split ('&') [4], params5 = loc.split ('&') [5], params6 = loc.split ('&') [6 ], iframe = document.getElementById ('myIframe'); оповещение (iframe.src); iframe.src = iframe.src + '?' + params + '&' + params2 + '&' + params3 + '&' + params4 + '&' + params5; оповещение (iframe.src); но есть ли способ иметь дополнительные операторы &, чтобы мне не приходилось подробно описывать каждое из них? - person jgrannis; 03.05.2012
comment
Вы можете увидеть мой код выше в моем исходном посте, так что его немного легче читать ... - person jgrannis; 03.05.2012
comment
Для начала не нужно использовать многократное разбиение, только один раз в конце строки loc = window.location ...., поскольку он возвращает массив со всеми битами, которые вам нужны. Затем вы можете перебрать массив с помощью $ .each (loc, function (i, val) {}); Также создайте массив из того, который вам не нужен var unwanted = ['peach = orange']; и в каждом обратном вызове вы можете использовать метод $ .inArray () (api.jquery.com/jQuery .inArray), если он находится в нежелательном массиве, игнорируйте его, если не используйте. Ах да, забыл, что есть params = '', а затем просто используйте + =, чтобы добавить к нему. - person GillesC; 04.05.2012