Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/369.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.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 如何仅临时修改我无法直接访问的外部站点的设计(客户端)?_Javascript_Ajax_Iframe_Xmlhttprequest_Cross Domain - Fatal编程技术网

Javascript 如何仅临时修改我无法直接访问的外部站点的设计(客户端)?

Javascript 如何仅临时修改我无法直接访问的外部站点的设计(客户端)?,javascript,ajax,iframe,xmlhttprequest,cross-domain,Javascript,Ajax,Iframe,Xmlhttprequest,Cross Domain,这是一个正常的网站,有一个和一个表格,提交和检查验证码是否正确,然后采取的id和做一些信息的要求 我没有访问这个网站的权限,它也不是我的。我需要它来获取信息,但该网站没有一个好的设计,所以我想修改该网站的设计,使其更好地看到,视觉 我能做这个吗 我尝试将PHP cUrl和jQuery$ajax与crossdomain true结合使用,但在这两个方面我都被拒绝访问 重要提示:我想做的就是,临时更改页面布局,当您刷新页面时,您会丢失它,因为它是客户端的 比如: javascript:changeC

这是一个正常的网站,有一个和一个表格,提交和检查验证码是否正确,然后采取的id和做一些信息的要求

我没有访问这个网站的权限,它也不是我的。我需要它来获取信息,但该网站没有一个好的设计,所以我想修改该网站的设计,使其更好地看到,视觉

我能做这个吗

我尝试将PHP cUrl和jQuery$ajax与crossdomain true结合使用,但在这两个方面我都被拒绝访问

重要提示:我想做的就是,临时更改页面布局,当您刷新页面时,您会丢失它,因为它是客户端的

比如:

javascript:changeContent();

可能吗?

你不能。您可以使用iFrame包含站点。但你不能只是更新它。如果你可以,那么你可以为每一个其他网站。也就是说,你可以在Facebook这样的网站上改变一切

访问iFrame的DOM:

var iframe = document.getElementById('myframe'); // The id of the iFrame
var iFrame = iframe.contentWindow || iframe.contentDocument;
if (iFrame.document) { // DOM can be accessed
    iFrame = iFrame.document;
    iFrame.body.style.backgroundColor = "blue"; // Example
} else {
    // DOM can't be accessed in this browser.
}

我忘了。除非iFrame位于您的域中,否则无法访问它的DOM。根本不允许跨站点脚本编写。所以结论是:这是不可能的。

是的,这是可能的。我已经找到了解决办法

你想的更简单。我刚刚创建了一个JavaScript本机脚本,通过获取html元素的标识符来修改整个站点的所有元素、样式、宽度、高度等等

我的代码:

javascript:function z(a,b,c,d,e,f,g){x=document.getElementsByTagName(a);
if(b!=null)x=x[b].getElementsByTagName(c);if(d!=null)x=x[d].getElementsByTagName(e);if(f!=null)x=x[f].getElementsByTagName(g);return x;}
function i(v){return document.getElementById(v).style;}
b=document.body.style;
b.backgroundColor="#f3f3f3";
b.margin="13% auto";
b.width="400px";
b.height="160px";
b.border="1px solid #CCCCCC";
b.padding="10px";
z("label")[0].style.fontFamily="Segoe UI";
z("label")[0].style.fontSize="13px";
z("label")[0].style.padding="0px 0px 10px 0px";
z("table")[0].style.display = "none";
z("hr")[0].style.display = "none";
z("p")[0].style.display = "none";
z("p")[1].style.display = "none";
z("p")[2].style.display = "none";
z("td")[1].style.display = "none";
document.getElementsByName("opcao")[0].style.display = "none";
i("submit1").float = "left";
z("label")[0].style.float = "left";
z("label")[0].style.display = "block";
z("td")[4].style.float = "left";
z("font")[6].face = "Segoe UI";
z("td")[4].style.display = "block";
z("td")[4].style.width = "250px";
z("td")[3].style.float = "left";
z("td")[3].style.width = "300px";
document.getElementsByName("captcha")[0].style.float = "left";
document.getElementsByName("captcha")[0].style.width = "140px";
z("td")[4].style.float = "left";
document.getElementById("submit1").value = "Insert Data";
k=i("submit1");
k.color="#fff";
k.backgroundColor="#FFAF19";
k.border="1px solid #CCCCCC";
k.height="34px";
k.width="165px";
也许你在抱怨:

那些字母是什么??为什么代码使用带有一个字母的变量? 回答:这是因为您在浏览器地址栏中粘贴的字符大小限制约为2000个字符

简单化,例如,我使用:

document.getElementsByTagName('tag').getElementsByTagName('tag')[x];

//Like, for example:
document.getElementsByTagName('div')[0].getElementsByTagName('span')[0];
//The first span of the first div.
我依次这样做以查找元素并修改它们,并且: 我创建了一个函数,用更少的字符为我完成它

这就是代码很难理解的原因


然后我就在任何浏览器的地址栏上执行了这段代码,它就像一个符咒一样工作。

为什么我不能?我真的需要这么做,我的主管让我这么做,我从一天半开始就在努力这么做…为什么我不能…很明显为什么你不能。因为您需要授权访问才能更改站点的代码。您是否希望随机的人能够更改您的站点?AJAX甚至不能用于跨域。我不想修改站点的原始源代码,我只想在其中添加一张脸,临时的。只有客户端是的,我忘了。除非iFrame位于您的域中,否则无法访问它的DOM。根本不允许跨站点脚本编写。所以结论是,这是不可能的。Firebug之所以能够工作,是因为它没有更新iFrame的DOM。它正在更新实际站点。JavaScript可以做到这一点。但是您不能更新其他站点的DOM。你必须再次以Facebook为例。你可以把Facebook的iFrame改变一下,让它看起来像你自己的社交网络。为什么不呢?如果我不能做到这一点,我需要另一个想法,但我真的没有选择,我需要这样做。@dandavis再次看到问题并重新回答。如果您只控制一台计算机,请使用tampermonkey或GreasmMonkey自动运行bookmarklet代码,而不受字符数大小限制。好的,但我正在使用Delphi TWebBrowser,只需将TWebBrowser.url设置为我的javascript代码。我的解决方案非常广泛,因为它可以手动和手动地在每个浏览器上工作。