Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在iFrame问题中注入HTML、CSS和JAVASCRIPT_Javascript_Jquery_Html - Fatal编程技术网

在iFrame问题中注入HTML、CSS和JAVASCRIPT

在iFrame问题中注入HTML、CSS和JAVASCRIPT,javascript,jquery,html,Javascript,Jquery,Html,我正在尝试构建类似于Tinkerbin或JSFIDLE的东西。 这是一个私人项目 以下是我现在得到的: 一切正常,除了JAVASCRIPT选项卡。我遵循了如何将自定义HTML和CSS注入Netuts上的iframe教程http://net.tutsplus.com/tutorials/html-css-techniques/how-to-inject-custom-html-and-css-into-an-iframe/. 以下是我修改的javascript代码: (function() { $

我正在尝试构建类似于Tinkerbin或JSFIDLE的东西。 这是一个私人项目

以下是我现在得到的:

一切正常,除了JAVASCRIPT选项卡。我遵循了如何将自定义HTML和CSS注入Netuts上的iframe教程http://net.tutsplus.com/tutorials/html-css-techniques/how-to-inject-custom-html-and-css-into-an-iframe/.

以下是我修改的javascript代码:

(function() {
$('.grid').height( $(window).height() );    

var contents = $('iframe').contents(),
    body = contents.find('body'),
    styleTag = $('<style></style>').appendTo(contents.find('head')),
    jsTag = $('<script><\/script>').appendTo(contents.find('head'));

$('textarea').keyup(function() {
    var $this = $(this);
    if ( $this.attr('id') === 'html') 
    {
    body.html( $this.val() );
    } 
    else
    {
    styleTag.text( $this.val() ), 
    jsTag.text( $this.val() );
    }

});  })  ();
我添加了jsTag=$.appendTocontents.find'head';行和jsTag.text$this.val

我很确定这与jsTag=$part有关。 为什么是工作,而不是不工作

请帮我解决这个问题,过去两个小时我一直在解决这个问题


再次感谢

我对jQuery不是很在行,所以我用纯Javascript制作了这个解决方案,稍后我将在jQuery中尝试:

var contents = $('iframe').contents(),
    body = contents.find('body'),
    styleTag = $('<style></style>').appendTo(contents.find('head')),
    jsTag = document.createElement('script');
contents.find('head')[0].appendChild(jsTag);

我不太喜欢jQuery,所以我用纯Javascript制作了这个解决方案,稍后我将在jQuery中尝试:

var contents = $('iframe').contents(),
    body = contents.find('body'),
    styleTag = $('<style></style>').appendTo(contents.find('head')),
    jsTag = document.createElement('script');
contents.find('head')[0].appendChild(jsTag);

在用代码附加脚本之前,不会对脚本求值,然后jQuery将获取脚本并进行解析。只有注入一个空的脚本标记不会产生任何效果,因为jQuery并没有真正将其放入DOM中,而只是在运行时对其进行解析。

除非您用代码对脚本进行附加,然后jQuery将获取并解析该脚本。只注入一个空的脚本标记不会产生任何效果,因为jQuery并没有真正将其放入DOM中,而只是在运行时对其进行解析。

您的脚本正在将JavaScript的内容插入标记中,而不是插入标记中。我知道,我该如何更改它?谢谢您的脚本正在将JavaScript的内容插入标记中,而不是插入标记中。我知道,我该如何更改它?谢谢好的,明白了。那么我怎样才能让它工作呢?我需要添加特殊字符才能工作?或者类似的?转义字符?我现在想不出一个好的、快速的解决方案,但我可以说,您应该在主页jQuery和iFrame jQuery之间创建一个隧道,并在iFrame中生成$.globalEval,因为如果您只是在主页中解析脚本,它在iFrame中不会生效,但要记住那些“评估是邪恶的”概念。好的,明白了。那么我怎样才能让它工作呢?我需要添加特殊字符才能工作?或者类似的?转义字符?我现在想不出一个好的、快速的解决方案,但我可以说,您应该在主页jQuery和iFrame jQuery之间创建一个隧道,并在iFrame中生成$.globalEval,因为如果您只是在主页中解析脚本,它在iFrame中不会生效,但请记住那些eval是邪恶的概念。我尝试了jsTag.text“test message”,但控制台返回了以下错误:TypeError:object的属性“text”不是函数。我想您必须修改如何在标记上插入文本。我尝试了jsTag.text“test message”,但控制台返回了以下错误:TypeError:object的属性“text”不是函数。我想你必须修改如何在标签上插入文本