зміна розміру міждоменного iframe


85

Як змінити розмір iframe з іншого домену

-Редагувати

Прокрутіть униз, щоб знайти деякі рішення .. або прочитайте, як НЕ робити цього: D

Після багатогодинного злому коду - висновок полягає в тому, що все, що є в iframe, недоступне, навіть смуги прокрутки, які відображаються в моєму домені. Я спробував безліч методів безрезультатно.

Щоб заощадити ваш час, навіть не йдіть цим маршрутом, просто використовуйте sendMessages для міждоменного зв'язку. Є плагіни для HTML <5, якими я користуюсь - Перейдіть до нижнього для гарного прикладу :)


Останні кілька днів я намагався інтегрувати iframe на сайт. Це короткострокове рішення, тоді як інша сторона розробляє та API (може зайняти місяці ...) І оскільки це короткострокове рішення, яке ми зробили, хочемо використовувати easyXDM - я маю доступ до іншого домену, але досить складно просити їх додати заголовок p3p як є .....

3 фрейми

Найближчим рішенням, яке я знайшов, було 3 фрейми - але воно відповідає умовам хрому та сафарі, тому я не можу цим користуватися.

відкрити в хромі

http://css-tricks.com/examples/iFrameResize/crossdomain.php#frameId=frame-one&height=1179

Виміряйте смуги прокрутки

Я знайшов інший допис про те, як використовувати висоту прокрутки, щоб спробувати змінити розмір форми .. теоретично це працює добре, але я не міг застосувати його належним чином, використовуючи висоту прокрутки iframes ..

document.body.scrollHeight

Це чітко використовує висоту тіл (не вдається отримати доступ до цих властивостей на 100% на основі відображення клієнтів canvaz, а не висоти документа x-доменів)

Я спробував використовувати jquery, щоб отримати висоту iframes

$('#frameId').Height()

$('#frameId').clientHeight

$('#frameId').scrollHeight

повертають значення, різні за хромом і тобто - або просто взагалі не мають сенсу. Проблема в тому, що все всередині кадру відмовлено - навіть смуга прокрутки ...

Обчислювальні стилі

Але якщо я перевіряю та в хромірую елемент iframe, він показує мені розміри документів усередині iframe (за допомогою jquery x-domain для отримання iframe.heigh - доступ заборонено) в обчисленому CSS немає нічого введіть тут опис зображення

Тепер, як хром обчислює це? (редагувати - браузер повторно відображає сторінку, використовуючи вбудований механізм рендерингу, щоб обчислити всі ці налаштування - але вони ніде не прикріплені, щоб запобігти міждоменному шахрайству .. так ..)

HTML4

Я прочитав специфікацію HTML4.x, і там сказано, що мають бути доступні лише значення для читання, що виставляються через document.element, але доступ заборонено через jquery

Проксі-кадр

Я пішов шляхом проксі-сервера назад і підрахував, що це нормально .. до тих пір, поки користувач не увійде в систему iframe, і проксі отримає сторінку входу замість фактичного вмісту. Крім того, для деяких людей дзвінок на сторінку двічі неприйнятний

http://www.codeproject.com/KB/aspnet/asproxy.aspx

http://www.johnchapman.name/aspnet-proxy-page-cross-domain-requests-from-ajax-and-javascript/

Знову рендеріть сторінку

Я не зайшов так далеко, але є двигуни jscript, які будуть переглядати джерело та повторно відображати сторінку на основі вихідного файлу. але для цього потрібно зламати ці jscripts .. і це не є ідеальною ситуацією для комерційних організацій ... і деякі викликають чисті аплети Java або рендеринг на стороні сервера

http://en.wikipedia.org/wiki/Server-side_JavaScript

http://htmlunit.sourceforge.net/ <-java не jscript

http://maxq.tigris.org/


РЕДАКТУВАТИ ОНОВЛЕННЯ 09-2013

Все це можна зробити за допомогою сокетів HTML5. Але easyXDM є чудовим резервом для сторінок скарг, що не стосуються HTML5.

Рішення 1 Дуже чудове рішення!

Використання easyXDM

На своєму сервері ви налаштували сторінку у формі

<html>
<head>
<script src="scripts/easyXDM.js" type="text/javascript"></script>
<script type="text/javascript" language="javascript">

    var transport = new easyXDM.Socket(/** The configuration */{
    remote: "http://www.OTHERDOMAIN.com/resize_intermediate.html?url=testpages/resized_iframe_1.html",

    //ID of the element to attach the inline frame to
    container: "embedded",
    onMessage: function (message, origin) {
        var settings = message.split(",");
        //Use jquery on a masterpage.
        //$('iframe').height(settings[0]);
        //$('iframe').width(settings[1]);

        //The normal solution without jquery if not using any complex pages (default)
        this.container.getElementsByTagName("iframe")[0].style.height = settings[0];
        this.container.getElementsByTagName("iframe")[0].style.width = settings[1];
    }
});

</script>

</head>

<body>
    <div id="embedded"></div>
</body>

а в домені абонентів їм просто потрібно додати intermiedate_frame html та easyXDM.js там же. Як батьківська папка - тоді ви можете отримати доступ до відносних каталогів або до папки, що міститься саме для вас.

ВАРІАНТ 1

Якщо ви не хочете додавати сценарії на всі сторінки, перегляньте варіант 2!

Потім вони можуть просто додати простий jscript в кінець кожної сторінки, для якої потрібно змінити розмір. Не потрібно включати easyxdm на кожну з цих сторінок.

 <script type="text/javascript">
            window.onload = function(){ parent.socket.postMessage( (parseInt(document.body.clientHeight)) + "," + ( document.body.clientWidth ) );  };
        </script>

Я змінив параметри, які він надсилає. Якщо ви хочете, щоб ширина працювала належним чином, тоді сторінки на іншому домені повинні включати ширину сторінки в стилі десь схоже на:

<style type="text/css">
            html, body {
                overflow: hidden;
                margin: 0px;
                padding: 0px;
                background-color: rgb(75,0,85);
                color:white;
                width:660px
            }
            a {
            color:white;
            visited:white;
            }
        </style>

Для мене це чудово працює. Якщо ширина не включена, тоді кадр поводиться трохи дивно і kind'of намагається вгадати, якою вона повинна бути .. і не зменшиться, якщо вам це потрібно.

ВАРІАНТ 2

Змініть проміжний кадр для опитування змін

Ваш проміжний кадр повинен виглядати приблизно так ...

    <!doctype html>
<html>
    <head>

        <title>Frame</title>
        <script type="text/javascript" src="easyXDM.js">
        </script>
        <script type="text/javascript">
            var iframe;
            var socket = new easyXDM.Socket({
                //This is a fallback- not needed in many cases
                swf: "easyxdm.swf",
                onReady: function(){
                    iframe = document.createElement("iframe");
                    iframe.frameBorder = 0;
                    document.body.appendChild(iframe);
                    iframe.src = "THE HOST FRAME";
            iframe.onchange = messageBack();

                },
                onMessage: function(url, origin){
                    iframe.src = url;
                }
            });

            //Probe child.frame for dimensions.
            function messageBack(){
                socket.postMessage ( iframe.contentDocument.body.clientHeight + "," + iframe.contentDocument.body.clientWidth); 
            };

            //Poll for changes on children every 500ms.
            setInterval("messageBack()",500); 

        </script>
        <style type="text/css">
            html, body {
                overflow: hidden;
                margin: 0px;
                padding: 0px;
                width: 100%;
                height: 100%;
            }

            iframe {
                width: 100%;
                height: 100%;
                border: 0px;
            }
        </style>
    </head>
    <body>

    </body>
</html>

Інтервал можна зробити більш ефективним для перевірки, якщо розмір змінився, і надіслати, лише якщо розміри змінюються, замість того, щоб розміщувати повідомлення кожні 500 мс. Якщо ви здійсните цю перевірку, ви можете змінити опитування на 50 мс! весело провести час


Працюйте в різних браузерах і швидко. Чудові можливості налагодження !!

Excellent Work to  Sean Kinsey  who made the script!!!

Рішення 2 (працює, але не чудово)

Отже, якщо у вас є взаємна угода з іншим доменом, ви можете додати бібліотеку для обробки sendmessage. Якщо у вас немає доступу до іншого домену .. Продовжуйте шукати більше хаків - тому що я не зміг знайти або повністю виправдати їх, які знайшов.

Отже, інший домен включатиме їх у тег Head

<script src="scripts/jquery-1.5.2.min.js" type="text/javascript"></script>
<script src="scripts/jquery.postmessage.min.js" type="text/javascript"></script>
<script src="scripts/club.js" type="text/javascript"></script>

У club.js є лише деякі спеціальні дзвінки, які я зробив для зміни розміру дзвінків і містить ..

 $(document).ready(function () {   
    var parent_url = decodeURIComponent( document.location.hash.replace( /^#/, '' ) ),link;
//Add source url hash to each url to authorise callback when navigating inside the frame.Without this clicking any links will break the communication and no messages will be received
$('a[href]').each(function(){ 
     this.href = this.href + document.location.hash ;
});
//Get the dimensions and send back to calling page.
var h1 = document.body.scrollHeight;
var w1 = document.body.scrollWidth;
$.postMessage({ if_height: h1, if_width: w1 }, parent_url, parent );
  });

І ваша сторінка виконає всю важку роботу і має хороший сценарій ...

  //This is almost like request.querystring used to get the iframe data
  function querySt(param, e) {
         gy = e.split("&");
         for (i = 0; i < gy.length; i++) {
             ft = gy[i].split("=");
             if (ft[0] == param) {
                 return ft[1];
             }
         }
     }


     $(function () {
         // Keep track of the iframe dimensions.
         var if_height;
         var if_width;
         // Pass the parent page URL into the Iframe in a meaningful way (this URL could be
         // passed via query string or hard coded into the child page, it depends on your needs).
         src = 'http://www.OTHERDOAMIN.co.uk/OTHERSTARTPAGE.htm' + '#' + encodeURIComponent(document.location.href),
         // Append the Iframe into the DOM.
         iframe = $('<iframe " src="' + src + '" width="100%" height="100%" scrolling="no" frameborder="0"><\/iframe>').appendTo('#iframe');

         // Setup a callback to handle the dispatched MessageEvent event. In cases where
         // window.postMessage is supported, the passed event will have .data, .origin and
         // .source properties. Otherwise, this will only have the .data property.
         $.receiveMessage(function (e) {
             // Get the height from the passsed data.
             //var h = Number(e.data.replace(/.*if_height=(\d+)(?:&|$)/, '$1'));
             var h = querySt("if_height", e.data);
             var w = querySt("if_width", e.data);


             if (!isNaN(h) && h > 0 && h !== if_height) {
                 // Height has changed, update the iframe.
                 iframe.height(if_height = h);
             }
             if (!isNaN(w) && w > 0 && w !== if_width) {
                 // Height has changed, update the iframe.
                 iframe.width(if_width = w);
             }
             //For debugging only really- can remove the next line if you want
             $('body').prepend("Recieved" + h + "hX" + w + "w .. ");
             // An optional origin URL (Ignored where window.postMessage is unsupported).
           //Here you must put the other domain.com name only! This is like an authentication to prevent spoofing and xss attacks! 
         }, 'http://www.OTHERDOMAIN.co.uk');
     });

ВАРІАНТ 3

Їх зараз невелика бібліотека JS для управління зміною розміру міждоменних iFrames, вона все ще вимагає, щоб iFrame містив у собі трохи JavaScript, однак, це лише 2,8 тис. (765 байт Gzipped) рідної JS, яка не має залежностей і він нічого не робить, доки його не викликає батьківська сторінка. Це означає, що це приємний гість в системах інших людей.

Цей код використовує mutationObserver для виявлення змін DOM, а також звертає увагу на події зміни розміру, так що iFrame залишається розміром до вмісту. Працює в IE8 +.

https://github.com/davidjbradshaw/iframe-resizer


4
приклад easyXDM насправді має набагато менше коду, не покладається на зовнішні бібліотеки, а також працює у старих браузерах :) І так, я упереджений, оскільки я автор, але все ж ..
Шон Кінсі,

Я спробував easyXDM, але мені не вдалося переглядати внутрішні кадри для роботи інших посилань .. Я шукав приклади .. Були посилання, які не працювали, і сторінку прикладу не можна було очистити .. Це спрацювало! і була моєю оригінальною відповіддю .. але я використав це. Чи можете ви опублікувати спосіб внутрішнього перегляду, будь ласка .. я дивився і дивився ..
Piotr Kula

Приклад @ppumkin, який постачається із завантаженням, повністю підтримує внутрішній перегляд. Пошкоджене посилання - це, мабуть, експеримент, який я робив, але в один момент сервер змився ..
Шон Кінсі,

1
Так, дивився на це - і дивився і дивився: D чомусь я не зміг змусити його працювати зі своїм сайтом. Я спробую ще раз.
Piotr Kula

1
Це працює - але якщо я клацну посилання в цьому домені, це перезавантажить сторінку - з вашою бібліотекою - але я не можу отримати жодного повідомлення. Як я можу змусити його приймати запити незалежно від того, звідки вони надходять? І для чого цей easyxdm.swf? :)
Piotr Kula

Відповіді:


10

Річ у тому, що немає іншого способу, ніж використання міждоменних повідомлень для цього, оскільки вам потрібно отримати обчислену висоту від документа в одному домені до документа в іншому домені.

Отже, або ви робите це за допомогою postMessage(працює у всіх сучасних браузерах), або витрачаєте 5 хвилин на адаптацію прикладу зміни розміру iframe з easyXDM.

Іншій стороні насправді просто потрібно скопіювати кілька файлів у свій домен та додати один рядок коду до свого документа.


Навпаки, мій друг. Я знайшов спосіб змінити розмір iframe із перехресної сторінки doimain до розміру документа iframes і відсутність смуг прокрутки. це свого роду хакі, але опублікую пізніше .. це просто так просто неймовірно.
Piotr Kula

так ... я використовував плагін sendmessage jquwery - хоча я знайшов ще один хак - помилково позитивний ..;) дякую за хорошу підказку!
Piotr Kula

Ну, іноді найкраще - це слухати своїх однолітків - шанси на те, що ти відкриєш якийсь магічний хак, якого ні в кого іншого, досить мізерний :)
Шон Кінсі,

Уявіть, якби я це зробив - за чистим ударом і промахом - було б фантастично. Але так тонко: D Дякую
Пьотр Кула

Правда - якщо нічого іншого, ви принаймні пробували, експериментували і, можливо, також дізналися щось нове :)
Шон Кінсі

25

Подібно до того, що згадав Шон, ви можете використовувати postMessage. Я витратив стільки часу, намагаючись різними способами змінити розмір iframe за допомогою міждоменного, але не пощастило, поки не натрапив на цей чудовий допис у блозі Девіда Уолша: http://davidwalsh.name/window-iframe

Це поєднання мого коду та рішення Девіда. Моє рішення орієнтоване на зміну розміру фреймів.

На дочірній сторінці знайдіть висоту сторінки та передайте її батьківській сторінці (яка містить iframe). Замініть element_id на ідентифікатор елемента (html, body, будь-який інший).

<script>
function adjust_iframe_height(){
    var actual_height = document.getElementById('element_id).scrollHeight;
    parent.postMessage(actual_height,"*"); 
    //* allows this to post to any parent iframe regardless of domain
}
</script>

<body onload="adjust_iframe_height();"> 
//call the function above after the content of the child loads

У батьківському вікні додайте цей код. Замініть iframe_id своїм ідентифікатором iframe:

<script>
// Create IE + others compatible event handler
var eventMethod = window.addEventListener ? "addEventListener" : "attachEvent";
var eventer = window[eventMethod];
var messageEvent = eventMethod == "attachEvent" ? "onmessage" : "message";

// Listen to message from child window
eventer(messageEvent,function(e) {
  console.log('parent received message!:  ',e.data);
  document.getElementById('iframe_id').height = e.data + 'px';
},false);
</script>

Якщо відкрити консоль, ви побачите висоту, що друкується в журналі консолі. Це допоможе вам у налагодженні, ось чому я залишив його там.

Краще, Бейкер


Це чудово працює, але не так сильно в IE. Мені довелося надіслати 2 змінні, але IE не прийме "дані", якщо це масив або об'єкт. Однак я просто створив дані як data = var1 + "|" var2. На батьківському рівні ви просто розділили рядок на | і поверніть свої 2 вар.
dbonneville

5

Подивившись безліч різних рішень цього, я в підсумку написав просту невеличку бібліотеку, щоб врахувати низку різних випадків використання. Оскільки мені потрібно було рішення, яке підтримувало б декілька створених користувачами iFrames на сторінці порталу, підтримуваний браузер змінює розмір і міг справлятися із завантаженням JavaScript сторінки хоста після iFrame. Я також додаю підтримку розміру до ширини та функцію зворотного виклику та дозволяю перевизначення body.margin, оскільки ви, швидше за все, хочете, щоб цей параметр був нульовим.

https://github.com/davidjbradshaw/iframe-resizer

Код iframe - це лише трохи самостійного JavaScript, так що він може бути хорошим гостем на сторінках інших людей.

Потім сценарій ініціалізується на хост-сторінці з наступними доступними опціями.

iFrameResize({
    log                    : true,  // For development
    autoResize             : true,  // Trigering resize on events in iFrame
    contentWindowBodyMargin: 8,     // Set the default browser body margin style (in px)
    doHeight               : true,  // Calculates dynamic height
    doWidth                : false, // Calculates dynamic width
    enablePublicMethods    : true,  // Enable methods within iframe hosted page 
    interval               : 32,    // interval in ms to recalculate body height, 0 to disable refreshing
    scrolling              : false, // Enable the scrollbars in the iFrame
    callback               : function(messageData){ // Callback fn when message is received
        $('p#callback').html(
            '<b>Frame ID:</b> '    + messageData.iframe.id +
            ' <b>Height:</b> '     + messageData.height +
            ' <b>Width:</b> '      + messageData.width + 
            ' <b>Event type:</b> ' + messageData.type
        );
    }
});

Хороший чувак. Однозначно те, чим користуватиметься багато людей! +1
Пьотр Кула

1
що робити, якщо у мене немає доступу до віддаленого домену? Дякую
Бала Петерсон

@BalaPeterson, якщо ви не можете отримати доступ до віддаленого домену, ви не можете цього зробити через обмеження безпеки в браузері.
Девід Бредшоу

0

Замість того, щоб використовувати прокрутку = ні на iframe, я змінюю його на "авто". Потім я отримую розмір фактичного вікна

$(window).height();

і використовувати це як атрибут висоти iframe.

Ну, результат ...

У нас ніколи не буде прокрутки "сторінки", лише прокрутка "iframe". Коли ви орієнтуєтесь, не має значення хто є сувою, але важливо те, що є лише 1.

Ну, є проблема в тому, що користувач просто змінює розмір вікна під час навігації. Для вирішення цього я використовую:

setInterval(getDocHeight, 1);

Ви думали, що таке рішення призведе до помилок? Це працює для мене, і на iFrame у мене був динамічний контекст, згенерований php. Я боюся майбутніх помилок з цим ...


2
Звичайно, прокрутка "iframe" завжди матиме однаковий розмір сторінки. Отже, під час навігації Ви просто бачите це, як це було прокручуванням сторінки.
Elton Morais

0

На сьогоднішній день я знаю лише 4 рішення:

Тільки третій може вирішити багато проблем. Наприклад, ви можете створити адаптивний iFrame ; закрийте його зсередини, або ви можете з ним спілкуватися . Але для цього вам потрібен iFrame у Iframe та обхідний шлях "сторонніх файлів cookie" (необов'язково).

Я створив про це статтю з прикладом: міждоменний iFrame, керований подіями


0

Ви розглядали атрибути HTML5 "підходящості об'єкта"? Масштабує відео / зображення до iframe, а не масштабує iframe (приємно, якщо ви захопите зображення середнього розміру, яке в кінцевому підсумку має ширину 5000 пікселів). Опція "підгонка" (інші - "обкладинка" та "заповнення") використовує підхід типу "поштова скринька", щоб вмістити джерело, зберігаючи пропорції. Для перегляду там, де немає HTML5, схоже, існує ціла низка доступних поліфілів. Цей чудовий, але помилка в Edge закінчує його несумісністю з Новим кошмаром Microsoft близько року, зараз: https://github.com/anselmh/object-fit

РЕДАГУВАТИ: щоб обійти міждоменні проблеми, ви завжди можете просто виконати роботу в сценарії вмісту розширення Chrome, оскільки він вважає, що це частина сторінки, на яку ви наклеюєте свій iframe.


0

HTTPS ще одне посилання отримує висоту до автоматичної висоти iframe

зміст https://-a.com :

 <!DOCTYPE html>
    <html>
    <head>
        <title>Test Page</title>
    </head>
    <body>
        Test Page:
        <hr/>
        <iframe id="iframe" src="https://-b.com" style="width:100%;min-height:600px;border:none;" scrolling="no" ></iframe>
        <script>
        // browser compatibility: get method for event 
        // addEventListener(FF, Webkit, Opera, IE9+) and attachEvent(IE5-8)
        var myEventMethod = 
            window.addEventListener ? "addEventListener" : "attachEvent";
        // create event listener
        var myEventListener = window[myEventMethod];
        // browser compatibility: attach event uses onmessage
        var myEventMessage = 
            myEventMethod == "attachEvent" ? "onmessage" : "message";
        // register callback function on incoming message
        myEventListener(myEventMessage, function (e) {
            // we will get a string (better browser support) and validate
            // if it is an int - set the height of the iframe #my-iframe-id
            if (e.data === parseInt(e.data)) 
                document.getElementById('iframe').height = e.data + "px";
        }, false);
        </script>
    </body>
    </html>

https://-b.com Вміст iframe:

<!DOCTYPE html>
<html>
<head>
    <title>Test Iframe Content</title>
    <script type="text/javascript">
    // all content including images has been loaded
    window.onload = function() {
        // post our message to the parent
        window.parent.postMessage(
            // get height of the content
            document.body.scrollHeight
            // set target domain
            ,"*"
        )
    };
</script>
</head>
<body>
<br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>1
<br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>2
<br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>3
<br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>4
<br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>5
<br/><br/><br/><br/><br/><br/><br/><br/><br/><br/>6
</body>
</html>

Робочий стіл:

xcom http> ycom https РОБОТА

xcom https> ycom https РОБОТА

xcom http> ycom http РОБОТА

xcom https> ycom http РОБОТА

Скріншот тестової роботи


-2

Ви шукаєте висоту сторінки, що міститься в рамках iframe? У мене працює якийсь javascript, який перевіряє висоту вмісту iframe, а потім встановлює висоту iframe на висоту вмісту.

var Height = document.getElementById('iFrameId').contentWindow.document.body.scrollHeight;

document.getElementById('iFrameId').height = Height;

Однак це працює лише в тому випадку, якщо сторінка, яку ви показуєте в iframe, знаходиться в тому ж домені. Якщо це не так, ви не можете отримати доступ до необхідної інформації. Отже, помилка відмови у доступі.


Так, я вже це пробував. Це чудово працює .. на тому самому домені, як ви сказали .. Скажіть мені - як браузер знає, скільки коштує 100%, коли він спочатку обчислює висоту? чому ми також не можемо отримати доступ до цих значень? Chrome зберігає це в обчислюваних стилях для кожної сторінки в iframe, навіть x-домені ...
Piotr Kula

Висота обчислюється залежно від вмісту та атрибутів, які вони мають. Висота елемента не визначена, поки не будуть відображені діти.
MarioRicalde

як я можу отримати відображені значення тоді? як перевіряє в хромі робить?
Piotr Kula

-1, оскільки це не працює міждоменно, про що він просив.
Шон Кінсі,

Ви не можете отримати значення. Інспектор може, оскільки він має дозволи на рівень "розширення браузера", а не "веб-сторінку з іншим початком".
Квентін,

-2

Щоб змінити розмір iframe, ось простий сценарій:

це йде в голові: (це було написано для php-сценарію, для html, змініть 'на' та \ 'на' ...

<script type='text/javascript'>
<!--
function resizeIframe(id){
/*
this.obj=obj
//this.obj.width=null
//this.obj.width=window.frames[\"sizeframe1\"].document.body.scrollWidth
this.obj.style.height=\"\" // for Firefox and Opera
setTimeout(\"this.obj.style.height=this.obj.contentWindow.document.body.scrollHeight+(notIE?heightOffset:0)\",10) // setTimeout required for Opera
*/

el=document.getElementById(id)
el.style.height='200px' // for Firefox and Opera
setTimeout('el.style.height=el.contentWindow.document.body.scrollHeight+\"px\"',1) // setTimeout required for Opera
}

// -->
</script>"

кінець голови

це йде в тілі (пам'ятайте, це було написано для php-скрипту, для html змінити всі 'на' та \ 'на' ...)

<iframe onload='resizeIframe(this.id)' allowTransparency=\"true\" name='ccpaymentwindow' id='sizeframe1' marginwidth='1' marginheight='1' height='700' width='690' border='0' frameborder='1' scrolling='no' src='ccmslink.php?variable1=" . $variable1 . "'></iframe>

бонус: є кілька підказок вище. Оскільки він встановлений для PHP-сценаріїв, ви можете багато з ним зробити ... щоб дізнатися більше, зробити більше ...

Ключ до цього - "sizeframe1" .... для декількох "розмірів розмірів" на одній сторінці скопіюйте один і той же скрипт, але змініть ідентифікатор у iframe та ім'я в скрипті в голові та viola! у вас є кілька ресайзерів на одній сторінці ... це працює дуже добре!

є phun.


Я не думаю, що Ви звертаєтесь до фактичного запитання.
Andrew Barber

Так - це чистий javascript для зміни розміру iframe-файлу в тому ж домені. Набагато простіше використовувати jQuery будь-яким способом. Це не працює на різних сайтах, і тут немає нічого фантастичного, що дозволило б це зробити. І не існує такого поняття, як php-сценарії ?!
Piotr Kula
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.