是否可以从地址栏加载远程 JavaScript 文件?
我一直试图将其放入地址栏:
javascript:src='http://depot.com/file.js';funcname();
我不会用它来做坏事。我只是测试我的网站,仅此而已。如果你想保护你的网站,你必须先学会攻击它,对吗?
我想你应该能够执行以下操作:
javascript:(function () {
var newScript = document.createElement('script');
newScript.type = 'text/javascript';
newScript.src = 'http://depot.com/file.js';
document.getElementsByTagName('body')[0].appendChild(newScript);
})();
这是一个非常有用的示例(将其粘贴到地址栏中):
javascript:(function () {
var newScript = document.createElement('script');
newScript.type = 'text/javascript';
newScript.src = 'http://cornify.com/js/cornify.js';
document.getElementsByTagName('body')[0].appendChild(newScript);
for (var i = 0; i < 5; i++) {
newScript = document.createElement('script');
newScript.type = 'text/javascript';
newScript.src = 'http://cornify.com/js/cornify_run.js';
document.getElementsByTagName('body')[0].appendChild(newScript);
}
})();
Voila:
其实是这样的cornify.com http://www.cornify.com/正在将远程脚本包含在其书签中。
UPDATE:
As @Ben 在另一个答案中指出 https://stackoverflow.com/questions/3742118/load-remote-javascript-files-via-address-bar/3742363#3742363,调用远程脚本中定义的函数并不那么简单。 Ben 针对这个问题提出了一种解决方案,但还有另一种解决方案,就是 cornify 正在使用的解决方案。如果你签出http://cornify.com/js/cornify_run.js
您会看到该文件中只有一个函数调用。你可以将你的funcname()
就像 cornify 所做的那样,在单独的 JavaScript 文件中调用,因为保证脚本块按照插入的顺序执行。然后您必须包含这两个脚本,如下例所示:
javascript:(function () {
var newScript = document.createElement('script');
newScript.type = 'text/javascript';
newScript.src = 'http://depot.com/file.js';
document.getElementsByTagName('body')[0].appendChild(newScript);
newScript = document.createElement('script');
newScript.type = 'text/javascript';
newScript.src = 'http://depot.com/file_run.js';
document.getElementsByTagName('body')[0].appendChild(newScript);
})();
哪里的file_run.js
只需调用funcname()
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)