lihat pertanyaan saya ini mirip dengan stackoverflow.com/questions/1962707/... tetapi tidak bisakah kita mengubah gaya jika bingkai berasal dari server lain?
Jitendra Vyas
16
Itu betul. Konten Iframe tunduk pada kebijakan domain yang sama. Jika itu dari domain Anda, Anda dapat mengontrolnya, jika tidak, Anda dikunci. Ini mencegah semua jenis pembajakan halaman berbasis iframe.
Diodeus - James MacFarlane
2
Bukan solusi "hanya CSS", tetapi cukup baik untuk saya. +1
Nicu Surdu
2
Ini bukan CSS.
stramin
103
Singkatnya tidak.
Anda tidak dapat menerapkan CSS ke HTML yang dimuat dalam iframe, kecuali Anda memiliki kontrol atas halaman yang dimuat di iframe karena pembatasan sumber daya lintas domain.
Ini benar tetapi tidak benar-benar membantu orang memberi contoh tentang bagaimana caranya
Simon Dragsbæk
Apakah ini baru muncul pada 2018? Saya ingat bahwa saya dulu mengonfigurasi gaya iframe berasal dari luar. Saya mencoba menerapkan css ke iframe yang diberikan oleh skrip tetapi masih belum berfungsi.l
tidak berfungsi: Uncaught DOMException: Gagal membaca properti 'contentDocument' dari 'HTMLIFrameElement': Memblokir bingkai dengan asal " HOST " dari mengakses bingkai asal-silang.
tubbo
@tubbo, dalam kasus Anda, Anda tidak dapat menyematkan situs tidak sah yang dicegah dari XSS. Ini hanya untuk mereka yang mencari masalah mereka sendiri, bukan peretas: p
Riyaz Hameed
10
Jawaban cepatnya adalah: Tidak, maaf.
Tidak mungkin hanya menggunakan CSS. Pada dasarnya Anda perlu memiliki kontrol atas konten iframe untuk menata gaya itu. Ada beberapa metode menggunakan javascript atau bahasa web pilihan Anda (yang telah saya baca sedikit tentangnya, tetapi saya tidak terlalu terbiasa dengan diri saya sendiri) untuk menyisipkan beberapa gaya yang diperlukan secara dinamis, tetapi Anda akan memerlukan kontrol langsung atas konten iframe, yang kedengarannya seperti itu. seperti kamu tidak punya.
Gunakan Jquery dan tunggu sampai sumbernya dimuat, Ini adalah bagaimana saya telah mencapai (Digunakan interval sudut, Anda dapat menggunakan metode setInterval javascript):
mengapa Anda tidak menggunakan acara yang memuat iframe?
ProllyGeek
3
mungkin bukan cara Anda berpikir. iframe juga harus ada <link>di file css. DAN Anda tidak dapat melakukannya bahkan dengan javascript jika berada di domain yang berbeda.
Bisakah Anda memberi contoh bagaimana ini bisa dilakukan? Apakah maksud Anda sesuatu seperti itu <iframe src="/source" link=css-stylesheet:"/css.css">?
Anda tidak dapat menggunakan ini lagi karena kebijakan asal yang sama di browser Chrome. Pesan kesalahan:Uncaught DOMException: Failed to read the 'contentDocument' property from 'HTMLIFrameElement': Blocked a frame with origin **** from accessing a cross-origin frame.
Mohammad AlBanna
@adamj, bisakah kita mengubah overwrite style sheet dari elemen iframe? jika ya, silakan tambahkan skrip.
Super Model
2
Semacam cara hack-ish dalam melakukan sesuatu adalah seperti kata Eugene. Saya akhirnya mengikuti kode-nya dan menautkan ke CSS kustom saya untuk halaman tersebut. Masalahnya bagi saya adalah bahwa, Dengan timeline twitter Anda harus melakukan beberapa sidestepping dari twitter untuk mengganti kode mereka menjadi smidgen. Sekarang kami memiliki timeline bergulir dengan css kami untuk itu, font IE Larger, tinggi garis yang tepat dan membuat scrollbar tersembunyi untuk ketinggian lebih besar dari batas mereka.
var c = document.createElement('link');
setTimeout(frames[0].document.body.appendChild(c),500);// Mileage varies by connection. Bump 500 a bit higher if necessary
tidak yakin apakah ini jawaban yang benar untuk pertanyaan yang diberikan, tetapi itu adalah solusi yang bagus untuk mengubah ukuran formulir google sesuai dengan lebar perangkat, terima kasih banyak!
shiftyscales
0
Ya, itu mungkin meskipun rumit. Anda perlu mencetak / menggema HTML halaman ke dalam tubuh halaman Anda kemudian menerapkan fungsi perubahan aturan CSS. Menggunakan contoh-contoh yang sama yang diberikan di atas, Anda pada dasarnya akan menggunakan metode parsing untuk menemukan div di halaman, dan kemudian menerapkan CSS untuk itu dan kemudian mencetak ulang / menggemakannya ke pengguna akhir. Saya tidak membutuhkan ini jadi saya tidak ingin kode fungsi itu ke setiap item di CSS dari halaman web lain hanya untuk aphtply.
Tidak mungkin dari sisi klien. Kesalahan javascript akan dimunculkan "Kesalahan: Izin ditolak untuk mengakses properti" dokumen "" karena Iframe bukan bagian dari domain Anda. Satu-satunya solusi adalah mengambil halaman dari kode sisi server dan mengubah CSS yang dibutuhkan.
Jawaban ini benar dalam isinya tetapi terkait dengan JavaScript sedangkan pertanyaannya terkait dengan CSS. Jawabannya mungkin Anda perlu menggunakan JavaScript tetapi Anda tidak mengatakannya. Jawabannya juga mengasumsikan bahwa konten dalam iFrame berasal dari domain yang berbeda, yang tidak selalu demikian. Terakhir, pesan yang tepat akan bervariasi dari browser ke browser.
Jawaban:
Anda membutuhkan JavaScript. Ini sama dengan melakukannya di halaman induk, kecuali Anda harus mengawali perintah JavaScript Anda dengan nama iframe.
Ingat, kebijakan asal yang sama berlaku, jadi Anda hanya bisa melakukan ini ke elemen iframe yang berasal dari server Anda sendiri.
Saya menggunakan kerangka kerja Prototipe untuk membuatnya lebih mudah:
atau
sumber
Singkatnya tidak.
Anda tidak dapat menerapkan CSS ke HTML yang dimuat dalam iframe, kecuali Anda memiliki kontrol atas halaman yang dimuat di iframe karena pembatasan sumber daya lintas domain.
sumber
Iya. Lihatlah utas lainnya untuk detail: Bagaimana cara menerapkan CSS ke iframe?
sumber
frame1
adalah nama iframe, bukan IDAnda dapat mengambil konten yang
iframe
pertama dan kemudian menggunakanjQuery
penyeleksi terhadap mereka seperti biasa.Semoga berhasil!
sumber
Jawaban cepatnya adalah: Tidak, maaf.
Tidak mungkin hanya menggunakan CSS. Pada dasarnya Anda perlu memiliki kontrol atas konten iframe untuk menata gaya itu. Ada beberapa metode menggunakan javascript atau bahasa web pilihan Anda (yang telah saya baca sedikit tentangnya, tetapi saya tidak terlalu terbiasa dengan diri saya sendiri) untuk menyisipkan beberapa gaya yang diperlukan secara dinamis, tetapi Anda akan memerlukan kontrol langsung atas konten iframe, yang kedengarannya seperti itu. seperti kamu tidak punya.
sumber
Gunakan Jquery dan tunggu sampai sumbernya dimuat, Ini adalah bagaimana saya telah mencapai (Digunakan interval sudut, Anda dapat menggunakan metode setInterval javascript):
sumber
mungkin bukan cara Anda berpikir. iframe juga harus ada
<link>
di file css. DAN Anda tidak dapat melakukannya bahkan dengan javascript jika berada di domain yang berbeda.sumber
<iframe src="/source" link=css-stylesheet:"/css.css">
?Ternyata itu bisa dilakukan melalui jQuery:
https://stackoverflow.com/a/13959836/1625795
sumber
Uncaught DOMException: Failed to read the 'contentDocument' property from 'HTMLIFrameElement': Blocked a frame with origin **** from accessing a cross-origin frame.
Semacam cara hack-ish dalam melakukan sesuatu adalah seperti kata Eugene. Saya akhirnya mengikuti kode-nya dan menautkan ke CSS kustom saya untuk halaman tersebut. Masalahnya bagi saya adalah bahwa, Dengan timeline twitter Anda harus melakukan beberapa sidestepping dari twitter untuk mengganti kode mereka menjadi smidgen. Sekarang kami memiliki timeline bergulir dengan css kami untuk itu, font IE Larger, tinggi garis yang tepat dan membuat scrollbar tersembunyi untuk ketinggian lebih besar dari batas mereka.
sumber
Cukup tambahkan ini dan semua berfungsi dengan baik:
sumber
Ya, itu mungkin meskipun rumit. Anda perlu mencetak / menggema HTML halaman ke dalam tubuh halaman Anda kemudian menerapkan fungsi perubahan aturan CSS. Menggunakan contoh-contoh yang sama yang diberikan di atas, Anda pada dasarnya akan menggunakan metode parsing untuk menemukan div di halaman, dan kemudian menerapkan CSS untuk itu dan kemudian mencetak ulang / menggemakannya ke pengguna akhir. Saya tidak membutuhkan ini jadi saya tidak ingin kode fungsi itu ke setiap item di CSS dari halaman web lain hanya untuk aphtply.
Referensi:
sumber
Menggabungkan berbagai solusi, inilah yang berhasil bagi saya.
sumber
Tidak mungkin dari sisi klien. Kesalahan javascript akan dimunculkan "Kesalahan: Izin ditolak untuk mengakses properti" dokumen "" karena Iframe bukan bagian dari domain Anda. Satu-satunya solusi adalah mengambil halaman dari kode sisi server dan mengubah CSS yang dibutuhkan.
sumber