источник iframe из URL

У нас есть страница на нашем сайте, которая загружает iFrame магазина afillate. Мы хотим отправить электронное письмо со ссылками, которые загрузят страницу на нашем сайте с подробной информацией о продукте, представленном в iFrame. Приведенный ниже код работает, но он ломается, если пользователь переходит непосредственно на страницу нашего сайта, не используя ссылку с элементом страницы, определенным в URL-адресе.

Не уверен, имеет ли это значение, но источник iframe находится в совершенно другом домене, и я не могу его контролировать.

Это работает: http://www.mysite.html/thispage.aspx?id=16500&page=http://myiframesource.com/detail/0307959473

Это не работает: http://www.mysite.html/thispage.aspx?id=16500 (при загрузке iframe src изменяется на "undefined")

Вот что у меня есть до сих пор:

<script language="javascript">
    window.onload = updateiframe; //event handler (calls the function)

    function updateiframe() {
        function getUrlVars() {
            var vars = [], hash;
            var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');

            for(var i = 0; i < hashes.length; i++) {
                hash = hashes[i].split('=');
                vars.push(hash[0]);
                vars[hash[0]] = hash[1];
            }

            return vars;
        }

        var hash = getUrlVars();
        var myiframepage = decodeURIComponent(hash['page']);
        document.getElementById('myiframe').src = myiframepage;
    }
</script>

<iframe id="myiframe" name="myiframe" src="myiframesource.com" width="555" height="2000" border="0" style="border: 0px solid #ffffff;"></iframe>

Заранее спасибо за вашу помощь!


person lmg    schedule 05.03.2014    source источник
comment
Попросите своих пользователей перейти на эту страницу ТОЛЬКО по ссылке в электронном письме! потому что именно из URL-адреса извлекается src iframe! если iframe src не меняется для каждого пользователя, просто введите ссылку прямо в src из iframe!   -  person    schedule 05.03.2014


Ответы (1)


В URL-адресе, который не работает, отсутствует параметр «страница».

Ваш javascript извлекает все параметры из URL-адреса и помещает их в массив. Затем он пытается найти параметр «страница» в этом массиве:

var myiframepage = decodeURIComponent(hash['page']);

чего явно не хватает. Следовательно, «неопределенный» источник для вашего iframe.

Вы можете добавить небольшой фрагмент в свой javascript, чтобы проверить правильный параметр «id», и если это 16500, и вам не хватает параметра «страница», вы можете выполнить перенаправление javascript:

var hash = getUrlVars();
var myiframepage = decodeURIComponent(hash['page']);
if(typeof(myiframepage) == 'undefined') {
    var id = decodeURIComponent(hash['id']);
    if(typeof(id) != 'undefined' && id == '16500') {
        window.location.replace('http://www.mysite.html/SiteText.aspx?id=16500&page=http://myiframesource.com/detail/0307959473');
    }
}
else {
    document.getElementById('myiframe').src = myiframepage;
}

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

И будьте осторожны с передачей таких данных. Люди могут легко захватить ваш iframe и показать там вредоносный веб-сайт, указав URL-адрес с другим параметром страницы!

person Reinder Wit    schedule 05.03.2014
comment
большое спасибо! это сработало для меня, но, основываясь на вашем комментарии об угоне, я решил пойти другим путем и определить базу URL-адреса iframe и передать только числовой параметр в ссылке. Это также устранило проблему, связанную с отсутствием определения параметра страницы и изменением источника iframe на неопределенное. Спасибо еще раз! - person lmg; 05.03.2014