gpt4 book ai didi

javascript - 阻止 Umbraco/TinyMce 将绝对 URL 转换为相对 URL

转载 作者:行者123 更新时间:2023-11-28 07:25:02 25 4
gpt4 key购买 nike

Umbraco/TinyMce 都喜欢从编辑器中的任何绝对 URL 中删除基本域。这是有问题的,因为我有一个 RSS 源,它会抓取我的帖子,并每周通过电子邮件将它们发送给订阅者。问题是,如果图像(和链接,但我稍后会担心这一点)如果它们的 URL 是相对的,那么它们显然将不起作用。

到目前为止,我已完成以下操作:

1) 添加到tiny_mce_src.js:

convert_urls : false,
relative_urls : false,
remove_script_host : false,

与现有情况相反,Umbraco 的 convert_urls 必须设置为 false。

使用媒体内容选择器(或内置 HTML 编辑器),这将保留键入的内容(直到保存/发布..)。否则,它会在关闭媒体内容选择器或内置 HTML 编辑器时删除基本域。

2) 下一个问题是内容创建者不想乱用 HTML,因此我需要媒体选择器在选择图片时自动具有基本域。我在 insertImage.js 中对此进行了硬编码:

        if (src.substring(0, umbracoPath.length) == umbracoPath) {
// if the path contains a reference to the umbraco path, it also contains a reference to go up one level (../)
src = src.substring(umbracoPath.length + 3, src.length);
}

var formObj = document.forms[0];
formObj.src.value = 'https://example.com' + src;

这会修复所有问题,直至发布和保存。基本上,在框架的丛林健身房中的某个地方,它会获取当前域和子域(如果适用),并且如果该域位于富内容编辑器框中(例如在链接或图像 href/src 中),它将..将其删除。

解决此问题的方法是在上面的 insertImage.js 代码中使用 https://www.example.com/,并确保您仅通过 https://example.com 访问后台。 .

但是,这不会起作用,因为我会让一些内容创建者使用 www,而另一些则不会。另外,即使我没有硬编码,而是在 insertImage.js 中说如果 www 位于当前域中,则不是 www(反之亦然),如果员工 A(使用 www)转到员工 B 的旧帖子,最终会导致问题做了(不使用 www)并重新保存 - 它会将其推回到相对 URL。

我的问题是:我可以在 Umbraco 框架中的哪里查看以直接编辑此问题的来源?

最佳答案

另一种方法是使用解析器、正则表达式或子字符串方法。我也不必担心维护对 Umbraco 框架所做的任何更改。

在我为 RSS 提要调用此信息时,我仅使用了一个简单的子字符串:

      var bt = node.GetProperty("bodyText").Value
.Replace("src=\"/","src=\"https://example.com/")
.Replace("href=\"/","href=\"https://example.com/");
@Html.Raw(bt);

任何以正斜杠作为第一个字符的 src 和 href 属性都将被替换为基本域名。这非常适合我的设置,但例如,如果您在博客文章中显示代码,则可能会导致问题。

解析器,例如 HTML Agility Pack pack 更好,但如果我可以在技术上用 1 行新代码解决我的问题,我就不需要它。

关于javascript - 阻止 Umbraco/TinyMce 将绝对 URL 转换为相对 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29776113/

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