jquery.getScript - 如何设置属性?

时间:2016-07-24 15:11:01

标签: javascript jquery

我只需执行

即可创建脚本

jQuery.getScript('hi.js').done(function(script){ /*script is a plain text */})

正如我们所见,"已完成"的参数是"脚本",但它只是加载脚本的文本。但是我需要访问元素本身!如果我想将其ID设置为" helloScript"?

,该怎么办?

在vanilla js中,我可以这样做:

var script = document.createElement("script");
script.type = "text/javascript";
script.src = url;
script.setAttribute('id', 'helloScript'); // <----------------------- this!
document.getElementsByTagName("head")[0].appendChild(script);

但是我想知道如何在jQuery中执行此操作?

3 个答案:

答案 0 :(得分:2)

既然你不能(遗憾地)用jQuery做到这一点,你可以不这样做,这比你在问题中的做法简单得多:

// create script tag
var s = document.createElement('script');

// set script attributes
s.async = 1;
s.src = [whatever];

// inject to DOM
document.head.appendChild(s);

我认为可以知道注入了哪个脚本然后改变它的属性,但它似乎没有用。我将进一步研究jQuery github。似乎是关于这个问题的讨论here

似乎它可以在jQuery版本3.2.0中使用,并且可以这样工作:

$.ajax({
  dataType : "script",
  url      : "https://some/path",
  attrs    : { nonce: "EDNnf03nceIOfn39fn3e9h3sdfa" },
});

答案 1 :(得分:0)

看起来.getScript()提供了访问它创建的元素的方法,但你可以利用jQuery来简化你的vanilla方法:

$('<script>')
    .attr('id', 'helloScript')
    .attr('src', url)
    .appendTo('head');

编辑:在使用jQuery创建和附加脚本时,我似乎无法找到运行脚本onload事件的方法,所以如果你需要,你可能需要去Vanilla JS路线。

答案 2 :(得分:-1)

在脚本元素中调用 var image = bitmapImage.ImageTo24bpp(); //convert image to bytes[] ImageConverter imgCon = new ImageConverter(); var bytes= (byte[])imgCon.ConvertTo(image, typeof(byte[])); //save to filename File.WriteAllBytes(fname,bytes);

public void    SaveAsImageTo24bpp( Image img,string fname)
    {
        var bmp = new Bitmap(img.Width, img.Height, PixelFormat.Format24bppRgb);
        using (var gr = Graphics.FromImage(bmp))
            gr.DrawImage(img, new Rectangle(0, 0, img.Width, img.Height));         

        ImageConverter imgCon = new ImageConverter();
        var bytes = (byte[])imgCon.ConvertTo(bmp, typeof(byte[]));
         File.WriteAllBytes(fname,bytes);
    }

attr没有元素。