如何在url中插入javascript代码以在现有页面中插入iframe
我能够获得以下JS来创建IFRAME并将其添加到页面中 问题是,如果我在页面上创建JS方法,并单击一个按钮单击它,它就会工作。 但是,当我试图通过设置location.href将相同的JS注入页面url时,它的工作方式并不正确,而是用新的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
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我宁愿有安全性,也不愿有书签让人在网页上注入恶意代码,窃取和引导个人数据。