Заснемане на входящи URL параметри, след което прехвърлете към iFrame Src с Javascript

Така че се опитвам да разбера как да направя това с window.location в Javascript. Изпращам потребители към нашия сайт с добавен URL адрес с код на Google Анализ, който трябва да предам на 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
моят iframe html код съдържа формуляр в него, как мога да предам URL параметър на iframe form Action? Благодаря предварително   -  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
няма да работи на fiddle, няма параметър в 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 + '?' + параметри + '&' + параметри2 + '&' + параметри3 + '&' + параметри4+ '&' + параметри5; предупреждение (iframe.src); но има ли начин да има if допълнителни & изрази, така че да не се налага да изписвам всеки от тях? - person jgrannis; 03.05.2012
comment
Можете да видите моя код по-горе в оригиналната ми публикация, така че е малко по-лесно за четене... - person jgrannis; 03.05.2012
comment
За да започнете, не е необходимо да използвате split multiple time, само веднъж в края на реда loc = window.location.... тъй като връща масив с всички битове, които търсите. След това можете да преминете през масива, като използвате $.each(loc, function(i, val) {}); Също така изградете масив от този, който не искате var unwanted = ['peach=orange']; и във всяко обратно извикване можете да използвате метода $.inArray() (api.jquery.com/jQuery .inArray), ако е в нежелания масив, игнорирайте го, ако не го използвайте. А, да, забравих да има параметри = '' и след това просто използвайте +=, за да добавите към него. - person GillesC; 04.05.2012