javascript - 更改 iframe 中元素的 CSS 属性

标签 javascript jquery css iframe

这是我的典型领域的样子......

<input class='live-field' type=color data-el='#header' data-prop='background'>

每个字段都有类 live-field,属性 data-el 目标元素选择器和 data-prop 属性要改变.

每次更改输入值时,我都希望将 data-el 选择的元素的 CSS 属性 data-prop 更改为输入值。

现在我有这个...

$('.live-field').change(function(){
  var $t = $(this);
  $( $t.data('el') ).css( $t.data('prop'), $t.val() )
});

显然这行不通,因为 $( $t.data('el') ) 会在文档中查找元素,而不是在 iFrame 中...

这是我的笨蛋。 https://plnkr.co/edit/uJcSwtE2xheJnS1vOdde?p=preview

例如...如果我更改此输入的值...

<input class='live-field' type=color data-el='#header' data-prop='background'>

#f00,元素#header iframe的背景颜色应该改为#f00 (红色)。

最佳答案

您应该能够使用 jQuery 的 .contents() 方法访问 iFrame DOM,只要 iframe 与交互式内容共享相同的域。将 onChange 事件更改为使用以下代码应该可以解决问题:

$('.live-field').change(function(){
  var $t = $(this);
  $('#iframe').contents().find( $t.data('el') ).css( $t.data('prop'), $t.val() )
});

编辑澄清:iFrame 和您的输入必须共享同一个域,否则浏览器将不允许此类功能。参见 this article on Same-Origin Policy for more info on why.

关于javascript - 更改 iframe 中元素的 CSS 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38451017/

相关文章:

jquery - 如何找到canJs中bootstrap的selectpicker插件选择了哪个选项?

html - 悬停时增加高度并插入元素顶部和底部

php - 如何在 codeigniter 表单提交中包含一个图像的 css 类?

javascript - 如何使用 Node 检查器调试 nodejs 后端?

javascript - SailsJS 无法访问位于 asset/app 中的 index.html

javascript - 新元素被创建为 [object HTMLLIElement] - 为什么?

javascript - 调用曾孙组件方法

javascript - 使用 jQuery 使用选择器语法一次添加 2 个元素

jquery - 错误 32600 : JSON-RPC Request must be an object

css - 如何使用 Ruby 为彼此相邻的表单设置样式