gpt4 book ai didi

doxygen - 消除 doxygen 生成的文件中的内联 <script>

转载 作者:行者123 更新时间:2023-12-05 07:05:52 25 4
gpt4 key购买 nike

提议更改我们网络服务器的内容安全策略 (CSP) 以禁止内联脚本导致 doxygen 生成的文档出现问题。具体出现问题在生成的 index.html 文件中,以及以下行:

<!-- Generated by Doxygen 1.8.15 -->
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:cf05388f2679ee054f2beb29a391d25f4e673ac3&amp;dn=gpl-2.0.txt GPL-v2 */
$(function() {
initMenu('',false,false,'search.php','Search');
})
/* @license-end */</script>

如果 initMenu() 代码被放入一个单独的文件中,就像其他 JavaScript 文件一样,所有的东西工作得很好。是否有 doxygen 选项可以将所有 JavaScript 放入文件而不是内联?我们可以后处理生成的文件来执行此操作,但可能不知道此代码的“模式”何时可能由于 doxygen 本身的更新而改变。而且我们可能不知道使用额外的 doxygen 功能是否会导致其他内联 JavaScript。

欢迎提出任何建议。

谢谢

弗里茨·西克

最佳答案

首先,内容安全策略很有用,但远非绝对权威。还有其他完全无用的 header ,例如那些基于“隐私”阻止引荐来源网址的 header 。

其次,没有“text/javascript”这样的东西,也许他们的意思是application/javascript

如果您使用的是好的(尽管非常不常见的做法),则在 body 元素中没有任何 script 元素(使用 defer= head 中的 script 元素为“true”)。通过这样做,您将更好地理解 JavaScript 的结构,这反过来将帮助您变得更加熟练/有能力/帮助更多人/赚更多钱/等等。

您可以使用 document.getElementsByTagName('body')[0].getElementsByTagName('script') 查找 body 中的所有 script 元素 不属于那里的元素。

如果您确实body 元素中预先有 script 元素并将它们移动到 head 元素是现在不可行你可能不得不使用固有逻辑,简而言之,那些script元素将始终以特定且相当容易的方式插入到DOM中代码的可重现区域(比如最后一个元素)。在这种情况下,您可以通过以下方式找到它们:

document.getElementsByTagName('body')[0].lastChild
document.getElementsByTagName('body')[0].lastChild.previousSibling
document.getElementsByTagName('body')[0].lastChild.previousSibling.previousSibling

请记住,在您的代码中按 Enter 以使其更具可读性将插入一个 textNode,因此您可能希望将 nodeName 附加到这些实例并寻找“脚本”:

console.log(document.getElementsByTagName('body')[0].lastChild.nodeName);

有 DOM TreeWalker这可能会帮助你在这里,主观对你的 DOM 中的最终结果。我不知道您是否可以(可能)反向横穿所有元素。

一旦您知道要删除什么,而不是让所有内容变得复杂,只需将该对象(或id)发送到以下地址:

function element_del(id)
{
if (typeof id=='string' && id_(id) && id_(id).parentNode.removeChild)
{
id_(id).parentNode.removeChild(id_(id));
}
else if (typeof id=='object' && typeof id.parentNode=='object') {id.parentNode.removeChild(id);}
}

//Example:
element_del(document.getElementsByTagName('body')[0].lastChild);

希望对您有所帮助!

关于doxygen - 消除 doxygen 生成的文件中的内联 &lt;script&gt;,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62667526/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com