1

假设我在一个框架集中有 3 个框架,排列成 3 行。框架 1 和 3 来自我的网站,框架 2(中央框架)来自外部网站。有没有一种巧妙的方法可以强制浏览器将第 2 帧中的数据居中对齐?

我发现了一个小的解决方法,它在一个框架集中使用一个框架集,该框架集在数据的两侧都有 2 个空白列,但这意味着第 2 帧和第 3 帧的滚动条不对齐。

有任何想法吗?

编辑:我目前的代码是:

<html xmlns="http://www.w3.org/1999/xhtml" >
<head id="Head1" runat="server" />
<frameset rows="10%,65%,25%" 边框=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>
4

1 回答 1

2

我认为您正在寻找的是一种将一些 CSS 注入另一个框架的方法,即使它来自另一个站点。

我认为如果没有服务器端脚本来请求页面并对其进行修改,这将是不可能的。

Javascript 可以使用 window.frames[] 和使用 DOM 遍历来修改其他框架,就像本地框架中的元素一样。由于“同源策略”,这对您来说将是一个问题。这基本上意味着从 example.com 加载的框架中的 javascript 无法访问从 foo.com 加载的框架中的 DOM。即使您有类似的域 foo.example.com 和 bar.example.com,它们在浏览器中也会被视为单独的域,因此您的 javascript 不允许访问另一个域。

这也会影响使用 XMLHttpRequest 的 ajax 调用。有一些方法可以减少这种影响,但我认为您需要能够在线路的两侧运行 javascript。

我最近尝试了与您正在做的类似的事情,我想将一个站点嵌入另一个站点,但同源策略使其不切实际。

另一种方法是服务器端而不是客户端。创建一个 php 脚本,该脚本代表客户端从其他服务器请求内容,然后将其作为一直在您的服务器上提供服务。然后你的javascript,现在在同一台服务器上,可以用那个框架做它会做的事情。如果其他站点使用大量 cookie 或 ajax,这可能会很棘手,但您的 php 将没有同源策略来处理。

于 2008-10-07T16:53:07.720 回答