相关疑难解决方法(0)

使用javascript/jquery将"<script>"标记添加/附加到html

用例:我正在使用模板构建器应用程序.用户可以使用不同的组件构建html模板,如文本框,图片框,幻灯片等.

问题:我们面临的问题是幻灯片组件.我们正在使用nivoslider插件来构建它.滑块必须具有用户可以更改转换时间,选择转换等设置.用户可以添加多个幻灯片放映.
现在的问题是当我们添加多个幻灯片时,每个幻灯片可能都有自己的参数,所以我们不能有一个共同的功能.而且,用户可以回来编辑模板,所以我们需要为每个幻灯片显示独立的脚本.

研究:我们的基本结构有效,但卡在一个地方.我们需要script在用户添加到页面的每个幻灯片中附加一个标签.

    return    '<div id="slider" class="nivoSlider">'+
            '<div class="">'+
                '<img id="" class="image mover" style="position:absolute;left:0px;top:0px;" src="http://localhost/gobiggi_VS_2_2/images/slideShow/slide01.jpg" data-thumb="images/slideShow/thumb/slide01.jpg" alt="" />'+
            '</div>'+
            '<div class="">'+
                '<img id="" class="image mover" style="position:absolute;left:0px;top:0px;" src="http://localhost/gobiggi_VS_2_2/images/slideShow/slide02.jpg" data-thumb="images/slideShow/thumb/slide02.jpg" alt="" />'+
            '</div>'+
            '<div class="">'+
                '<img id="" class="image mover" style="position:absolute;left:0px;top:0px;" src="http://localhost/gobiggi_VS_2_2/images/slideShow/slide03.jpg" data-thumb="images/slideShow/thumb/slide03.jpg" alt="" />'+
            '</div>'+
            '<div class="">'+
                '<img id="" class="image mover" style="position:absolute;left:0px;top:0px;" src="http://localhost/gobiggi_VS_2_2/images/slideShow/slide04.jpg" data-thumb="images/slideShow/thumb/slide04.jpg" alt="" />'+
            '</div>'+
        '</div>'+'<script>$("#slider").nivoSlider({effect: "sliceDown",animSpeed: 500,pauseTime: 3000,startSlide: 0,controlNavThumbs: true,controlNavThumbsFromRel:true, pauseOnHover: true,manualAdvance: false});</script>';
Run Code Online (Sandbox Code Playgroud)

代码末尾的脚本标记是我们尝试附加到HTML并将其保存到数据库的内容.我们尝试了一个空白<div id="temp"></div>并在其中附加脚本标记,但我相信jQuery …

html javascript jquery slideshow

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

angular 4 _ 如何动态更改谷歌地图 api 密钥

我在我的应用程序中使用谷歌地图 API,如下所示:

在 index.html 中使用 api 键导入 url :

<script src="https://maps.googleapis.com/maps/api/js?key=myKey"></script>
Run Code Online (Sandbox Code Playgroud)

并在组件中像这样声明谷歌:

declare let google: any;
Run Code Online (Sandbox Code Playgroud)

并在这样的组件中使用它:

this.map = new google.maps.Map(document.getElementById('googleMap'), this.mapProp);
Run Code Online (Sandbox Code Playgroud)

如何动态更改 index.html 中存在的 API 密钥?

google-maps google-maps-api-3 angular2-services angular angular7

6
推荐指数
1
解决办法
956
查看次数

如何在 iframe 中插入动态 JavaScript 标签

最终更新:第二个代码块正在运行——我只是漏输入了 URL。

我正在尝试将动态创建的脚本放入 iframe 中。我可以访问 iframe 的头部,但它似乎不接受追加请求。控制台日志调用返回 head 标记,并且以下将文本附加到正文中效果很好。我还尝试将脚本标签附加到正文。(注意:脚本标记不在同一域中,因此我避免使用 getScript 或 ajax)。

$(document).ready(function() {
  $('<iframe></iframe>', {
      name:"contentFrame"
      ,id:"contentFrame"
  }).css("height", 300).css("width", 500).load(function() {
      var script   = document.createElement("script");
      script.type  = "text/javascript";
      script.src   = "//cross-domain.com/script.js";
      console.log($(this).contents().find("head")); // outputs: [<head></head>]
      $(this).contents().find("head").append(script); // doesn't work
      $(this).contents().find("body").append(script); // doesn't work
      $(this).contents().find("body").append("Test"); // works
  }).appendTo("#content");
});
Run Code Online (Sandbox Code Playgroud)

这是根据以下建议成功附加脚本的新版本,但该脚本不会评估(通过简单警报进行测试)。另外,另一个奇怪的地方是:“正在工作”图标显示大约 15 秒,状态(在 Chrome 中)显示“正在检索...”最终它停止了,但没有任何反应。

    $(document).ready(function() {
  $('<iframe></iframe>', {
      name:"contentFrame"
      ,id:"contentFrame"
  }).css("height", 300).css("width", 500).load(function() {
      var script   = document.createElement("script");
      script.type  = "text/javascript";
      script.src   = "//cross-domain.com/script.js";
      console.log($(this).contents().find("head"));
      $(this).contents().find("head")[0].appendChild(script);
      $(this).contents().find("body").append("Test");
  }).appendTo("#content");
});
Run Code Online (Sandbox Code Playgroud)

更新:当光标图标最终完成工作时(大约 …

javascript iframe jquery

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

document.createElement('script').src = variable?可能吗?

是否有可能创建类似于:

var jsfile = "code....";
(a=(b=document).createElement('script')).src=jsfile;
b.body.appendChild(a);
Run Code Online (Sandbox Code Playgroud)

'jsfile'就像一个外部的js文件,但在我们的例子中将是一个变量?

我的所有测试都失败了,我成功获得了'jsfile'的输入,但如果obj中有函数(记得我希望它像外部js文件一样预先形成),它们就没有执行.

测试示例:

var jsfile = "code....";
(a=(b=document).createElement('script')).text=(jsfile);
b.body.appendChild(a);
Run Code Online (Sandbox Code Playgroud)

javascript javascript-events

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

在shadow DOM中执行JS

我正在构建一个模块化的网络应用程序,其中要处理各种用户创建的模型。Shadow DOM 是一个明显的选择,但我不明白 JS 如何在 Shadow DOM 中执行。

我有一个 HTML 内容要使用以下虚拟脚本加载。

<h1>Nice header</h1>
<script type="text/javascript"> 
console.log('hello')
alert('hi');
</script>
Run Code Online (Sandbox Code Playgroud)

我使用之前的脚本加载页面,如下所示:

<div id="shadow-target"></div>
<div id="non-shadow-target"></div>

<script>
    // Called on btn click
    loadShadow = function(module) {
        var root = document.querySelector('#shadow-target').createShadowRoot();
        var lighttarget = document.querySelector('#non-shadow-target');     

        $.get('whatever.html', function (data) { 
            alert(data); 
            $(root).append(data);  // Nothing executed
            $(lighttarget).append(data); // Works fine
            // The header appears in both cases
        });
    }
</script>
Run Code Online (Sandbox Code Playgroud)

正如评论所说,当内容插入到影子 DOM 根时,JS 不会被执行。标头在两种情况下都会出现,但脚本仅在 light DOM 中执行。这是为什么?自定义JS如何在shadow DOM中执行?(没有跨域的东西。)

javascript shadow-dom

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

使用jQuery加载页面后加载外部脚本

我有点困惑如何做到这一点,基本上我有一个页面,通过JavaScript插入Facebook Share按钮:

<script src="http://static.ak.fbcdn.net/connect.php/js/FB.Share" type="text/javascript"></script>
Run Code Online (Sandbox Code Playgroud)

问题是它阻止了该部分的页面加载,如何在页面加载后插入此标记并仍然执行脚本?我想以一种不引人注目的方式来做这些想法吗?

javascript jquery

3
推荐指数
1
解决办法
1775
查看次数

如何使用jQuery动态添加外部脚本?

我认为我可以使用jQuery的.append()并将它们添加到头部,但这似乎不适用于我的外部脚本(Knockout.js).

这是我加载页面时运行的代码.它似乎适用于样式表,但不适用于外部脚本.

if (window.jQuery === undefined || window.jQuery.fn.jquery !== '1.8.0') {
    var script_tag = document.createElement('script');
    script_tag.setAttribute("type","text/javascript");
    script_tag.setAttribute("src",
        "http://code.jquery.com/jquery-1.8.0.min.js");
    if (script_tag.readyState) {
      script_tag.onreadystatechange = function () { // For old versions of IE
          if (this.readyState == 'complete' || this.readyState == 'loaded') {
              scriptLoadHandler();
          }
      };
    } else {
      script_tag.onload = scriptLoadHandler;
    }
    // Try to find the head, otherwise default to the documentElement
    (document.getElementsByTagName("head")[0] || document.documentElement).appendChild(script_tag);
} else {
    // The jQuery version on the window is the one we want …
Run Code Online (Sandbox Code Playgroud)

javascript jquery dynamic onload

3
推荐指数
1
解决办法
8408
查看次数

只有在我不通过jQuery追加它时才执行的脚本?

这是我的代码:

<script src="http://widgets.twimg.com/j/2/widget.js"></script><script>new TWTR.Widget({version: 2,type: "profile",rpp: 4,interval: 30000,width: 650,height: 202,theme: {shell: {background: "#7ee1fc",color: "#2e2e2e"},tweets: {background: "#ffffff",color: "#949494",links: "#009ece"}},features: {scrollbar: true,loop: false,vlive: false,hashtags: true,timestamp: true,avatars: false,behavior: "all"}}).render().setUser("microsoft").start();</script>
Run Code Online (Sandbox Code Playgroud)

加载一个twitter插件(但事实上,这并不重要).那么,现在,如果我用"字符串"编写整个代码并通过jQuery追加它:

var myText='<script src="http://widgets.twimg.com/j/2/widget.js"><\/script><script>new TWTR.Widget({version: 2,type: "profile",rpp: 4,interval: 30000,width: 650,height: 202,theme: {shell: {background: "#7ee1fc",color: "#2e2e2e"},tweets: {background: "#ffffff",color: "#949494",links: "#009ece"}},features: {scrollbar: true,loop: false,vlive: false,hashtags: true,timestamp: true,avatars: false,behavior: "all"}}).render().setUser("microsoft").start();<\/script>'

$('#twitterContent').html(myText);
Run Code Online (Sandbox Code Playgroud)

似乎它无法加载它(我得到一个错误,TWTR没有定义).

那么为什么一个版本应该有效而另一个版本不适用?我该如何解决这个问题呢?

PS如果你想要测试代码,就是小提琴.

javascript jquery social-networking

0
推荐指数
1
解决办法
293
查看次数

使用JQuery,如何在页面中的</ body>标记之前直接添加内容(另一个脚本)?

基本上我想要做的是,使用JQuery,直接在页面上的结束体标记之前添加脚本.

AKA

SCRIPT HERE
</body>
Run Code Online (Sandbox Code Playgroud)

有没有办法做到这一点,如果是这样,怎么样?

jquery

0
推荐指数
1
解决办法
271
查看次数

使用Jquery ajax时,如何附加<script> </ script>以及从其他页面返回的其他数据?

我正在使用ajax加载reCaptcha.从其他页面返回的内容中的一行是下面的行,div当我使用时,该行不会被加载到我的行中$(.cap).html(callBack);

这就是这条线

<script type="text/javascript" src="http://www.google.com/recaptcha/api/challenge?k=6LcXq-oSAAAAAOgwSIew_xq6xkv1QUxrZbRcMz6n"></script>

这是jQuery不允许的吗?或者我做错了什么?我怎么解决这个问题?如何将jquery从另一个页面返回到我的<div>

我正在测试的是,很简单:

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>No Tile</title>

<script type="text/javascript" src="http://localhost/site/scripts/jQuery.js"></script>

<style type="text/css">
.user {
    cursor: pointer;
}
</style>

<script type="text/javascript">
$(document).ready(function() {
    //$(".user").live("click",function() {
    $(".user").click(function() {

        data = "id=Hello"

        $.ajax({
              type:"GET",
               url:"demo.php",
              data:data,
          dataType:"html",

        beforeSend:function(html){

        },

        success: function(callBack){
            $(".cap").html(callBack);

            console.log(callBack);
        },

        error: function(page_data){

        },

        });

    });
});
</script>
</head>
<body>

<div id="container">

<div class="cap">Hello</div>

<span class="user">Add User</span>
</div>

</body>
</html>
Run Code Online (Sandbox Code Playgroud)

这是从其他页面返回的行不会被加载到div.

<script type="text/javascript" …

javascript ajax jquery

0
推荐指数
1
解决办法
285
查看次数