Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/398.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
Javascript 代码在JSFIDLE中工作,但在浏览器中抛出错误_Javascript_Jquery_Html_Jsfiddle - Fatal编程技术网

Javascript 代码在JSFIDLE中工作,但在浏览器中抛出错误

Javascript 代码在JSFIDLE中工作,但在浏览器中抛出错误,javascript,jquery,html,jsfiddle,Javascript,Jquery,Html,Jsfiddle,您好,如果浏览器是在禁用的web安全模式下打开的,那么以下代码在Chrome浏览器上的JSFIDLE上运行良好。 我已将脚本放在document.ready处理程序中,但浏览器抛出以下错误:“getData未定义”: 在调试器中,以下是代码中断以引发错误的位置: 以下是我的HTML代码: <html> <body> <iframe src="https://news.ycombinator.com/" width="800" height="500"

您好,如果浏览器是在禁用的web安全模式下打开的,那么以下代码在Chrome浏览器上的JSFIDLE上运行良好。

我已将脚本放在document.ready处理程序中,但浏览器抛出以下错误:“getData未定义”:

在调试器中,以下是代码中断以引发错误的位置:

以下是我的HTML代码:

<html>

<body>
    <iframe src="https://news.ycombinator.com/" width="800" height="500" id="idframe"></iframe>

    <script src="https://code.jquery.com/jquery-1.10.2.js"></script>
    <script>
        $(function() {
            debugger;
            var iframe = document.getElementsByTagName('iframe')[0];
            iframe = document.getElementById('idframe');
            var url = iframe.src;
            var getData = function(data) {
                if (data && data.query && data.query.results && data.query.results.resources && data.query.results.resources.content && data.query.results.resources.status == 200) loadHTML(data.query.results.resources.content);
                else if (data && data.error && data.error.description) loadHTML(data.error.description);
                else loadHTML('Error: Cannot load ' + url);
            };
            var loadURL = function(src) {
                url = src;
                var script = document.createElement('script');
                script.src = 'http://query.yahooapis.com/v1/public/yql?q=select%20*%20from%20data.headers%20where%20url%3D%22' + encodeURIComponent(url) + '%22&format=json&diagnostics=true&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys&callback=getData';
                document.body.appendChild(script);
            };
            var loadHTML = function(html) {
                iframe.src = 'about:blank';
                iframe.contentWindow.document.open();
                iframe.contentWindow.document.write(html.replace(/<head>/i, '<head><base href="' + url + '"><scr' + 'ipt>document.addEventListener("click", function(e) { if(e.target && e.target.nodeName == "A") { e.preventDefault(); parent.loadURL(e.target.href); } });</scr' + 'ipt>'));
                iframe.contentWindow.document.close();
            }

            loadURL(iframe.src);
        });
    </script>
</body>

</html>

$(函数(){
调试器;
var iframe=document.getElementsByTagName('iframe')[0];
iframe=document.getElementById('idframe');
var url=iframe.src;
var getData=函数(数据){
if(data&&data.query&&data.query.results&&data.query.results.resources&&data.query.results.resources.content&&data.query.results.resources.status==200)加载HTML(data.query.results.resources.content);
else if(data&&data.error&&data.error.description)加载html(data.error.description);
else loadHTML('错误:无法加载'+url');
};
var loadURL=函数(src){
url=src;
var script=document.createElement('script');
script.src=http://query.yahooapis.com/v1/public/yql?q=select%20*%20来自%20data.headers%20其中%20url%3D%22'+encodeURIComponent(url)+'%22&format=json&diagnostics=true&env=store%3A%2F%2Fdatatables.org%2Falltableswithkeys&callback=getData';
document.body.appendChild(脚本);
};
var loadHTML=函数(html){
iframe.src='about:blank';
iframe.contentWindow.document.open();
iframe.contentWindow.document.write(html.replace(//i,'document.addEventListener(“单击”,函数(e){if(e.target&&e.target.nodeName==“A”){e.preventDefault();parent.loadURL(e.target.href);}}}});
iframe.contentWindow.document.close();
}
loadURL(iframe.src);
});

源代码
'https://news.ycombinator.com/“
您正试图加载到iframe的内容禁止与使用HTTP响应头
X-Frame-Options
的iframe一起使用,该头设置为
DENY
。因此它永远无法在iframe中加载

这样做是出于安全原因,以防止类似的威胁

(点击劫持)

(跨站点请求伪造)


小提琴也不能正常工作,并在控制台中抛出相同的错误。

语法如下:if(condition){return}else if(condition){return}else{return}。也许这就是问题所在。@AivarasP可能就是。因为我尝试只使用loadHTML运行它(“错误:无法加载页面”);在getData内部,但不知怎的,这个消息没有显示在iframe中!这把小提琴对我有用。不过,您可以尝试在禁用的web安全模式下加载小提琴。事实上,小提琴是我为克服“X-Frame-Options禁止显示”问题找到的解决方案