Выравнивание фрейма HTML - PullRequest
1 голос
/ 07 октября 2008

Скажем, у меня есть 3 кадра в наборе кадров, расположенных в 3 ряда. Кадры 1 и 3 взяты с моего сайта, а кадр 2 (центральный) - с внешнего сайта. Есть ли хитрый способ заставить браузер выравнивать данные по центру кадра по центру?

Я нашел небольшой обходной путь, который использует набор фреймов в наборе фреймов, который имеет 2 пустых столбца по обе стороны от данных, но это означает, что полосы прокрутки из кадров 2 и 3 не выровнены.

Есть идеи?

Редактировать: код, который у меня сейчас есть:

<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server" />
<frameset rows="10%,65%,25%" border=0 frameborder="no">
    <frame name="nav" noresize scrolling="no" src='NavigationBar.aspx?NAVIGATION=<%=sDisplayNavigation %>'>
    <frameset cols="1*,1010px,1*">
        <frame name="lspace" scrolling="no" src="border.htm">
        <frame name= "main" scrolling="auto" src='<%=sMainTextURL%>#highlight'>
        <frame name="rspace" scrolling="no" src="border.htm">
    </frameset>
    <frame name="suggest" scrolling="yes" noresize src='<%=sSuggestURL%>'>
</frameset>
</html>

1 Ответ

2 голосов
/ 07 октября 2008

Я думаю, что вы ищете способ внедрить некоторый CSS в другой фрейм, даже если он пришел с другого сайта.

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

В Javascript есть способы изменить другие фреймы, используя window.frames [] и используя обход DOM, как и для элементов в локальном фрейме. Это будет проблематично для вас из-за «политики одного и того же происхождения». Это в основном означает, что javascript во фрейме, загруженном с example.com, не может получить доступ к DOM во фрейме, загруженном с foo.com. Даже если у вас есть похожие домены, foo.example.com и bar.example.com, в браузере они рассматриваются как отдельные домены, поэтому ваш javascript из одного не может получить доступ к другому.

Это также касается вызовов ajax с использованием XMLHttpRequest. Есть способы уменьшить влияние этого, но я думаю, что вы должны иметь возможность запускать javascript с обеих сторон строки.

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

Другой способ сделать это - на стороне сервера, а не на стороне клиента. Создайте скрипт php, который запрашивает контент с другого сервера от имени клиента, а затем передает его так, как если бы он был на вашем сервере все время. Тогда ваш javascript, теперь на том же сервере, может делать то же, что и с этим фреймом. Если на другом сайте используется много файлов cookie или ajax, это может быть непросто, но у вашего php не будет политики одного и того же происхождения.

...