相关疑难解决方法(0)

无法附加<script>元素

知道为什么下面的代码片段没有将脚本元素添加到DOM中吗?

var code = "<script></script>";
$("#someElement").append(code);
Run Code Online (Sandbox Code Playgroud)

javascript jquery

272
推荐指数
6
解决办法
30万
查看次数

异步加载脚本

我正在使用几个插件,自定义小部件和一些来自JQuery的其他库.结果我有几个.js和.css文件.我需要为我的网站创建一个加载器,因为它需要一些时间来加载.如果我可以在导入所有之前显示加载器,那将是很好的:

<script type="text/javascript" src="js/jquery-1.6.2.min.js"></script>
<script type="text/javascript" src="js/myFunctions.js"></script>
<link type="text/css" href="css/main.css" rel="stylesheet" />
... 
....
 etc
Run Code Online (Sandbox Code Playgroud)

我找到了几个教程,使我能够异步导入JavaScript库.例如,我可以这样做:

  (function () {
        var s = document.createElement('script');
        s.type = 'text/javascript';
        s.async = true;
        s.src = 'js/jquery-ui-1.8.16.custom.min.js';
        var x = document.getElementsByTagName('script')[0];
        x.parentNode.insertBefore(s, x);
    })();
Run Code Online (Sandbox Code Playgroud)

出于某种原因,当我对我的所有文件做同样的事情时,页面不起作用.我一直在努力试图找到问题的所在,但我找不到它.首先我认为这可能是因为一些javascript函数依赖于其他函数.但是我使用超时功能以正确的顺序加载它们,当一个完成后我继续下一个并且页面仍然表现得很奇怪.例如,我无法点击链接等...动画仍然有效..

无论如何

这就是我一直在想的......我相信浏览器有一个缓存,这就是为什么第一次加载页面需要很长时间以及下次快速加载页面的原因.所以我想要做的是用一个异步加载所有这些文件的页面替换我的index.html页面.当ajax完成后,将所有这些文件重定向到我计划使用的页面.使用该页面时,加载时间不应太长,因为文件应该包含在浏览器的缓存中.在我的索引页面(异步加载.js和.css文件的页面)我不关心错误.我将只显示一个加载器并在完成后重定向页面...

这个想法是一个很好的选择吗?或者我应该继续尝试实现异步方法?


编辑

我加载所有异步的方式就像:

importScripts();

function importScripts()
{
    //import: jquery-ui-1.8.16.custom.min.js
    getContent("js/jquery-1.6.2.min.js",function (code) {
                var s = document.createElement('script');
                s.type = 'text/javascript';
                //s.async = true;
                s.innerHTML=code;
                var x = document.getElementsByTagName('script')[0];
                x.parentNode.insertBefore(s, x);
                setTimeout(insertNext1,1);
            });


    //import: jquery-ui-1.8.16.custom.min.js
    function insertNext1()
    {
        getContent("js/jquery-ui-1.8.16.custom.min.js",function (code) …
Run Code Online (Sandbox Code Playgroud)

html javascript ajax html5 asynchronous

119
推荐指数
5
解决办法
20万
查看次数

加载模板dom时,angular2模板/钩子中的脚本标记

我很困难,不知道如何解决我的问题......

简化:我有一个基于绑定创建ulist的组件,如下所示:

@Component({
   selector: "template",
   template: `
     <ul>
       <li *ng-for="#challenge of jobs.challenges">{{challenge}}</li>
     </ul>
   `})
export class JobTemplate{
  jobs: Jobs;
  constructor(jobs:Jobs){
    this.jobs = jobs
  }     
}
Run Code Online (Sandbox Code Playgroud)

组件选择器/主机嵌入在php回显的普通html流中,用于替换预定义的ulist.问题是在正常站点上,使用ulist之后的脚本标记在列表上应用一些jquery魔术.

由于脚本标记在组件模板加载完成之前被回显,因此jquery调用将找不到模板DOM的元素.将脚本标记放在我的模板中(最后)不起作用; 它似乎被忽略了.

<ul>
  <a><li *ng-for="#challenge of jobs.challenges">{{challenge}}</li></a>  
</ul>
<script>
   $("ul a").on("click", function (event)
        {
        var parent = $(this).parent();
        if(parent.hasClass('active'))
          ....slideToggle("normal");
        else
        ....
        });
</script>
Run Code Online (Sandbox Code Playgroud)

此外,该站点使用基础框架,每次向页面添加新元素时(例如,通过外部更新我的组件的绑定),我需要调用$(document).foundation().

所以我的问题是,当我不知道我的模板是否已经完成创建时,如何在我的模板DOM上调用jquery.在我的组件模板中定义时,onload处理程序不起作用.

我读过有关AfterViewInit的内容,但我对此感到不知所措.有人可以请我朝正确的方向努力吗?

如何找出组件模板何时完全插入"主"DOM?

javascript jquery angular

12
推荐指数
2
解决办法
2万
查看次数

angular2:包括组件中的第三方js脚本

有没有办法在Angular2组件中包含第三方JS脚本而不是将其包含在index.html中?

我有一个包装dataTables的表组件.它是唯一需要dataTables js/css包含的组件.如果我可以让我的index.html更清洁,那就太好了.组件装饰器允许您指定css文件.

我尝试在我的组件html中移动我的脚本标签,但这似乎不起作用.

javascript angular

9
推荐指数
1
解决办法
1万
查看次数

我已成功将CefSharp嵌入到.NET 4.0应用程序中.是否有可能让jQuery调用在DOM上运行?

我试图找出这是否可能.我已经通过GitHub示例https://github.com/chillitom/CefSharp给了我类的源代码(虽然我无法从这个GITHUB构建CefSharp本身.

然后,我尝试从这个链接https://github.com/downloads/ataranto/CefSharp/CefSharp-1.19.0.7z下载二进制文件,然后通过参考这些示例构建我的C#win32应用程序,这相当顺利地进行了8个小时左右我有一个工作的嵌入式浏览器,yipeee.但是,我现在处于想要操作DOM的位置 - 我已经读过你只能使用webView.EvaluateScript("some script"); 和webView.ExecuteScript("some script"); 因为cefsharp无法提供直接DOM访问

所以我想知道的是.我可以调用jQuery方法吗?如果我加载的页面已经加载了jQuery,我可以在c#中执行以下操作吗?

webView.ExecuteScript("$(\"input#some_id\").val(\"user@example.com\")"));
Run Code Online (Sandbox Code Playgroud)

目前这引发了一个例外.我想找出来; 我是否应该尝试使用cefsharp DLL中的jQuery,或者我是否必须坚持标准的旧学校JavaScript,这将花费我5倍的时间来编写...?

我希望堆叠器有答案.我已经为cefsharp尝试了wiki和论坛,但是它们并没有提供太多的线索; 我发现的唯一例子是旧式的JavaScript.

c# jquery cefsharp

7
推荐指数
1
解决办法
2万
查看次数

动态插入脚本标签?

所以我有这个脚本标签

 <script async="async" data-cfasync="false" src=""></script>
Run Code Online (Sandbox Code Playgroud)

我希望能够动态插入。我试过将它设置为一个变量,

 let scriptTag = '<script async="async" data-cfasync="false" src=""></script>';
Run Code Online (Sandbox Code Playgroud)

并使用 innerHTML 将其添加到我的内容 div 中,但这似乎不起作用。我知道我这样做是非常错误的,我的一部分认为这可能是不可能的。

我想这样做的原因是为了测试目的,我可以打开和关闭广告,这样我在测试期间的观点就不会影响分析,这是我应该担心的事情还是可以忽略不计。我只知道我已经被禁止使用 chartboost,而没有打开和关闭广告的测试变量。

编辑:是的,这与其他问题类似,但这些问题没有使用“data-cfasync”等属性解决。Mandalina 和 supra28 把它钉在了头上。

html javascript script-tag

5
推荐指数
1
解决办法
6749
查看次数

标签 统计

javascript ×5

jquery ×3

angular ×2

html ×2

ajax ×1

asynchronous ×1

c# ×1

cefsharp ×1

html5 ×1

script-tag ×1