28

我在使用 MVC4 捆绑和 TinyMCE 时遇到问题。我收到此错误:

    GET http://localhost:54717/Admin/EditText//langs/da.js 404 (Not Found) Site:1
    GET http://localhost:54717/Admin/EditText//plugins/lists/editor_plugin.js 404 (Not Found) Site:1
    GET http://localhost:54717/Admin/EditText//plugins/autolink/editor_plugin.js 404 (Not Found) Site:1
    GET http://localhost:54717/Admin/EditText//themes/advanced/editor_template.js 404 (Not Found) Site:1
    GET http://localhost:54717/Admin/EditText//plugins/spellchecker/editor_plugin.js 404 (Not Found) Site:1
    GET http://localhost:54717/Admin/EditText//plugins/pagebreak/editor_plugin.js 404 (Not Found) Site:1
    GET http://localhost:54717/Admin/EditText//plugins/style/editor_plugin.js 404 (Not Found) Site:1
    GET http://localhost:54717/Admin/EditText//plugins/table/editor_plugin.js 404 (Not Found) Site:1
    GET http://localhost:54717/Admin/EditText//plugins/layer/editor_plugin.js 404 (Not Found) Site:1
    GET http://localhost:54717/Admin/EditText//plugins/save/editor_plugin.js 404 (Not Found)
Failed to load: http://localhost:54717/Admin/EditText//langs/da.js 

代码如下所示(在 BundleConfig.cs 中)

bundles.Add(
      new ScriptBundle("~/Scripts/Site").Include(
        "~/Scripts/jquery-1.9.1.js",
        "~/Scripts/tinymce/tiny_mce.js",
         "~/Scripts/jquery-ui-1.10.1.js",
        "~/Scripts/jquery.ui.slider.js",
        "~/Scripts/oline.Base.js",
        "~/Scripts/Validate/Language/jquery.validationEngine-da.js",
        "~/Scripts/Validate/jquery.validationEngine.js",
        "~/Scripts/jquery.ui.effect-blind.js",
        "~/Scripts/jquery.placeholder.min.js"));

      BundleTable.EnableOptimizations = true; 

在布局中:

@Scripts.Render("~/Scripts/Site")

但是,如果我从捆绑中删除 tiny_mce.js 并像这样放置它 <script src="~/Scripts/tinymce/tiny_mce.js"></script>它工作得很好。是因为我需要覆盖tinymce的自动加载并手动放置吗?

4

5 回答 5

31

在调用 tinymce.init 之前,请执行以下操作:

tinymce.baseURL = "@Url.Content("~/Scripts/tinymce")";

或者你的脚本保存在哪里。

我有同样的问题。这是我工作的最终产品

    <script>
    tinymce.baseURL = "@Url.Content("~/Scripts/tinymce")";

    // tinyMCE setup
    tinymce.init({
        selector: "textarea.rt-edit",
        browser_spellcheck: true,
        menubar: false,
        plugins: "paste,preview,code,textcolor,link",
        invalid_elements: "script",

        // Theme options - button# indicated the row# only
        toolbar1: "bold italic underline strikethrough subscript superscript link | fontselect fontsizeselect forecolor backcolor | justifyleft justifycenter justifyright cut copy paste pastetext pasteword| outdent indent | undo redo | code preview ",

    });
</script>
于 2014-04-22T20:08:20.450 回答
16

今天也刚好碰到这个。似乎在捆绑tinymce时,它无法找到其他依赖脚本(插件、编辑器模板等)。

由于 TinyMCE 已经缩小,我只是通过从捆绑包中排除它并单独加载它来解决这个问题。像这样的东西:

@* include tinymce unbundled so it can find its plugins and other scripts internally when bundles are optimized *@
@if (BundleTable.EnableOptimizations)
{
    <script type="text/javascript" src="~/scripts/tinymce/tiny_mce.js"></script>
}
else
{
    <script type="text/javascript" src="~/scripts/tinymce/tiny_mce_src.js"></script>
}

@Scripts.Render("~/Scripts/Site")

这样,您在启用优化时仍然使用预先缩小的版本,而在调试时仍然使用原始源代码。不过,最终浏览器会发送多个请求。

于 2013-04-30T14:41:10.037 回答
11

@Codeacula 有一个很好的解决方案,但另一种方法是将捆绑路径相对于 TinyMCE 文件夹。

请注意,您必须将其从主脚本包中拉出才能使其工作,但由于我没有在每个页面上都使用 TinyMCE,因此将其添加到主包中没有任何意义。此外,我使用.min.js作为扩展名,因为它加载基于主文件扩展名的插件,而我的插件文件夹中除了.min.js文件之外什么都没有。

var tinymce = new ScriptBundle("~/Scripts/tinymce/tinymce-bundle.min.js")
    .Include("~/Scripts/tinymce/tinymce.min.js");
bundles.Add(tinymce);

在需要 TinyMCE 的页面上:

@Scripts.Render("~/Scripts/tinymce/tinymce-bundle.min.js");
于 2015-01-22T18:51:47.700 回答
2

我知道,我知道一个长期死的帖子,但是,因为我今天自己偶然发现了这个问题,所以我想减少我的 2 美分。

上面接受和/或批准的答案都很好,但它们并没有关闭我的渴望,因为没有多个连接到服务器的开销,以便在tinymce(.min).js请求它们时下载 tinyMCE 工作所需的所有 js .

由于我看到主 js 文件中实际上有一个 javascript 加载器,它仅在尚未定义变量(在其中声明的变量)时才下载所需的脚本,所以我想将整个 .js 集包含在一个包中,以便当您调用.init函数脚本时,将不需要下载。就像是:

bundles.Add(new ScriptBundle("~/Scripts/tinymce/bundledTinyMCE").IncludeDirectory("~/Scripts/tinymce", "*.js", true));

假设您的 tinyMCE 位于文件夹中~/Scripts/tinymce

不会触发进一步的后期脚本下载,并且您的 tinyMCE js 将被缩小和捆绑(在发布配置中)

于 2020-01-27T15:19:51.317 回答
0

在我的情况下,我执行以下操作来解决:忽略捆绑并直接引用插件的缩小版本。

@section scripts
{
    @Scripts.Render("~/bundles/ajax")
    @Scripts.Render("~/bundles/jqueryval")
    <script src="~/Scripts/tinymce/tinymce.min.js"></script>
}
于 2015-10-15T11:22:55.360 回答