0

親から iframe のコンテンツにスタイルシートを適用しようとしています - はい、これと同じアイデアに関して過去にいくつかの質問があったことは知っていますが、私はここで同じドメイン内で作業しており、試しましたこのWebサイトのほぼすべてのソリューションであり、どれも機能していません。これが私が得たものです:

<html>
<title>Untitled</title>
<head>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>

<script type="text/javascript" media="screen">

    var cssLink = document.createElement("link") 
    cssLink.href = "http://domain.extension/style.css"; 
    cssLink .rel = "stylesheet"; 
    cssLink .type = "text/css"; 
    frames['#window'].document.body.appendChild(cssLink);

</script>

<style type="text/css" media="screen">

body {
    margin: 0px;
    padding: 0px;
    height: 100%;
}

iframe#window {
    padding: 0px;
    border: 0;
    width: 100%;
    height: 100%
}

</style>
</head>
<body>
    <iframe name="window" id="window" sandbox="allow-forms allow-scripts" src="http://domain.extension/example"/>
</body>
</html>
4

2 に答える 2

1

両方のスクリプト (フレーム内のスクリプトとメイン ウィンドウのスクリプト) で、document.domain をドメインに設定する必要があります。これは、 $(document).ready() などの前にある必要があります..

document.domain = "ra.gs";
var cssLink = $("<link/>",{
    href: "http://static.ra.gs/ttnnmnd/HFnmays5q/style.css",
    rel: "stylesheet",
    type: "text/css"
});

var iframeBody = $(window.document.frames["window"].window.document).contents().find("body");

iframeBody.prepend(cssLink);
于 2012-09-26T16:52:56.497 に答える
1

私が知っていることから、これはサンドボックス化のために不可能です。なぜ AJAX を使用しないのですか? (これは同じドメイン上にあるためです。)

これを実装するには、<div id="frame"></div>要素を作成し、.load関数を使用して次のようにページを div にロードします。

$('#frame').load('/somepage.html');
于 2012-09-26T16:32:22.630 に答える