Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/458.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
如何在url中插入javascript代码以在现有页面中插入iframe_Javascript - Fatal编程技术网

如何在url中插入javascript代码以在现有页面中插入iframe

如何在url中插入javascript代码以在现有页面中插入iframe,javascript,Javascript,我能够获得以下JS来创建IFRAME并将其添加到页面中 问题是,如果我在页面上创建JS方法,并单击一个按钮单击它,它就会工作。 但是,当我试图通过设置location.href将相同的JS注入页面url时,它的工作方式并不正确,而是用新的iframe替换现有页面 这是我的密码: location.href = "javascript:ifrm = document.createElement('IFRAME');ifrm.style.width = 60+'px';ifrm.style.heig

我能够获得以下JS来创建IFRAME并将其添加到页面中

问题是,如果我在页面上创建JS方法,并单击一个按钮单击它,它就会工作。 但是,当我试图通过设置location.href将相同的JS注入页面url时,它的工作方式并不正确,而是用新的iframe替换现有页面

这是我的密码:

location.href = "javascript:ifrm = document.createElement('IFRAME');ifrm.style.width = 60+'px';ifrm.style.height = 40+'px';document.body.appendChild(ifrm);";

假设字符串保存在变量mystring中:

方法1:

方法2,如果要保留javascript::


假设字符串保存在变量mystring中:

方法1:

方法2,如果要保留javascript::


你必须把它包装成一个函数

location.href = "javascript:(function () {ifrm = document.createElement('IFRAME');ifrm.style.width = 60+'px';ifrm.style.height = 40+'px';document.body.appendChild(ifrm);})()";
…尽管您可以简单地用实际代码替换location.href更改:

ifrm = document.createElement('IFRAME');
ifrm.style.width = 60+'px';
ifrm.style.height = 40+'px';
document.body.appendChild(ifrm);

你必须把它包装成一个函数

location.href = "javascript:(function () {ifrm = document.createElement('IFRAME');ifrm.style.width = 60+'px';ifrm.style.height = 40+'px';document.body.appendChild(ifrm);})()";
…尽管您可以简单地用实际代码替换location.href更改:

ifrm = document.createElement('IFRAME');
ifrm.style.width = 60+'px';
ifrm.style.height = 40+'px';
document.body.appendChild(ifrm);
我说的。。。或者你可以把一个空0;在脚本的末尾

location.href = "javascript:ifrm = document.createElement('IFRAME');ifrm.style.width = 60+'px';ifrm.style.height = 40+'px';document.body.appendChild(ifrm); void 0;";
我假设您实际上并没有使用location.href执行此操作,而是通过在url栏中键入/粘贴,或创建一个bookmarklet。。。当我在url栏中输入javascript时,我经常被这个问题所困扰

无论如何,需要注意的关键是,如果您通过这三种方法中的任何一种将位置设置为javascript url,并且最后一条语句返回某个内容,那么文档体将设置为该对象。在代码中,最后一行是document.body.appendChildifrm,appendChild返回ifrm对象。在我建议的答案中,最后一条语句是空的,因此不会替换文档体。在Casey的建议中,函数没有return语句,因此它是一个void函数,文档体也没有被替换

要了解发生了什么,请尝试以下方法:

location.href = "javascript:ifrm = document.createElement('IFRAME');ifrm.style.width = 60+'px';ifrm.style.height = 40+'px';document.body.appendChild(ifrm); 'Hello world';";
或者是结果的一些变化

location.href = "javascript:ifrm = document.createElement('IFRAME');ifrm.style.width = 60+'px';ifrm.style.height = 40+'px';document.body.appendChild(ifrm); confirm('Pick one');";
我说的。。。或者你可以把一个空0;在脚本的末尾

location.href = "javascript:ifrm = document.createElement('IFRAME');ifrm.style.width = 60+'px';ifrm.style.height = 40+'px';document.body.appendChild(ifrm); void 0;";
我假设您实际上并没有使用location.href执行此操作,而是通过在url栏中键入/粘贴,或创建一个bookmarklet。。。当我在url栏中输入javascript时,我经常被这个问题所困扰

无论如何,需要注意的关键是,如果您通过这三种方法中的任何一种将位置设置为javascript url,并且最后一条语句返回某个内容,那么文档体将设置为该对象。在代码中,最后一行是document.body.appendChildifrm,appendChild返回ifrm对象。在我建议的答案中,最后一条语句是空的,因此不会替换文档体。在Casey的建议中,函数没有return语句,因此它是一个void函数,文档体也没有被替换

要了解发生了什么,请尝试以下方法:

location.href = "javascript:ifrm = document.createElement('IFRAME');ifrm.style.width = 60+'px';ifrm.style.height = 40+'px';document.body.appendChild(ifrm); 'Hello world';";
或者是结果的一些变化

location.href = "javascript:ifrm = document.createElement('IFRAME');ifrm.style.width = 60+'px';ifrm.style.height = 40+'px';document.body.appendChild(ifrm); confirm('Pick one');";

为什么要尝试使用location.href执行此操作?关于您试图实现的目标的一些背景知识会有所帮助-使用javascript:in location.href没有多大意义,但可能我遗漏了一些东西-因此详细说明会很有用…为什么不直接执行该代码呢?我们可以看到,没有必要只使用javascript:directive添加带/o的框架。这完全是恶意代码注入的尖叫。@austin cheney它还向我尖叫bookmarklet。开发人员通常希望允许用户在其他人的页面上执行某些操作,bookmarklet是一种很好的方法。仅仅因为你在别人的页面上捣乱,并不一定意味着你做了一些恶意的事情。当然,您的声明也是非常有效的。@aepheus我宁愿有安全性,也不希望有人可以通过bookmarklet在网页上注入恶意代码来窃取和指示个人数据。您为什么要用location.href这么做?关于您试图实现的目标的一些背景知识会有所帮助-使用javascript:in location.href没有多大意义,但可能我遗漏了一些东西-因此详细说明会很有用…为什么不直接执行该代码呢?我们可以看到,没有必要只使用javascript:directive添加带/o的框架。这完全是恶意代码注入的尖叫。@austin cheney它还向我尖叫bookmarklet。开发人员通常希望允许用户在其他人的页面上执行某些操作,bookmarklet是一种很好的方法。仅仅因为你在别人的页面上捣乱,并不一定意味着你做了一些恶意的事情。当然,你的声明也是非常有效的。@aepheus我宁愿有安全性,也不愿有书签让人在网页上注入恶意代码,窃取和引导个人数据。