小编Bob*_*mer的帖子

JQuery垃圾收集 - 这会干净吗?

许多文章(例如msdn)都说当涉及DOM对象和JS对象时,在某些浏览器中无法清除循环引用.

(IE 6根本无法完成,IE7只能在页面请求之间执行):

Javascript Native(Leaks):

function leak(){
    var elem = document.createElement("DIV");
    document.body.appendChild(elem);
    elem.onclick = function () {
        elem.innerHTML = elem.innerHTML + ".";
        // ...
    };
}
Run Code Online (Sandbox Code Playgroud)

因为元素的onload属性通过闭包引用回自身,所以它创建了一个循环引用:

elem [DOM] -> elem.onclick [JS] -> elem [DOM]

JQuery版本(不泄漏):

function leak(){
    var elem = $('<div></div>');
    $(document.body).append(elem);
    elem.click(function () {
        elem.html(elem.html() + ".");
        // ...
    };
}
Run Code Online (Sandbox Code Playgroud)

在这种情况下,即使仍有循环引用,jQuery也会阻止所有相关浏览器中发生泄漏:

elem [JS] -> element [DOM] -> elem.onclick [JS] -> elem [JS]

我的问题:如果仍有循环引用,jQuery如何阻止泄漏?

javascript jquery memory-leaks

15
推荐指数
1
解决办法
8576
查看次数

带有子项的ASP.NET自定义/用户控件

我想创建一个具有子项的自定义/用户控件.

例如,我希望我的控件具有以下标记:

<div runat="server" id="div">
    <label runat="server" id="label"></label>
    <div class="field">
        <!-- INSERT CHILDREN HERE -->
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

当我想在页面上使用它时,我只需:

<ctr:MyUserControl runat="server" ID="myControl">
    <span>This is a child</span>
    <div runat="server" id="myChild">And another <b>child</b>
</ctr:MyUserControl>
Run Code Online (Sandbox Code Playgroud)

我的用户控件中的子控件将被插入到我的用户控件中.完成此任务的最佳方法是什么?

该功能类似于asp:PlaceHolder,但我想添加更多选项以及其他标记等.子页面控件仍然需要能够被页面访问.(在上面的例子中,页面上应该有myChild控件)

编辑------

它可以是模板控件,只要它允许我引用页面上的子项.

asp.net

10
推荐指数
1
解决办法
6186
查看次数

具有枚举规范的模板模板类在MSVC++编译器上失败:C3201

以下是我的问题的SSCCE示例:

// My Library, which I want to take in the user's enum and a template class which they put per-enum specialized code
template <typename TEnum, template <TEnum> class EnumStruct>
struct LibraryT { /* Library stuff */ };

// User Defined Enum and Associated Template (which gets specialized later)
namespace MyEnum {
    enum Enum {
        Value1 /*, ... */
    };
};

template <MyEnum::Enum>
struct MyEnumTemplate {};

template <>
struct MyEnumTemplate<MyEnum::Value1> { /* specialized code here */ }; …
Run Code Online (Sandbox Code Playgroud)

c++ templates template-templates visual-c++ c++11

10
推荐指数
1
解决办法
711
查看次数

如何构造TypeScript

我一直负责调查是否为我们的产品使用类型脚本,我的主要目标之一是从类型脚本生成的新脚本应该具有与旧JS相同的签名

我们现有的结构略有命名空间,因为我们有一个基本的Function/namespace,而我们app中的其他模块挂起了基本命名空间.问题是基本命名空间还有一些功能

CompanyName.doSomething = function() {}

CompanyName.module = { doSomethingElse: function() {} }
Run Code Online (Sandbox Code Playgroud)

所以在TS中理想的是,id有一个名为CompanyName的模块,然后在该模块中存在其他类,但是如何处理直接属于该根命名空间的函数,我如何在TypeScript中构建它?

javascript typescript

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

ASP.NET自定义控件 - 命名容器

我有2个用户控件,我用作另一个的容器:

<mc:Container runat="server" ID="container">
   <mc:MyControl runat="server" ID="test">
</mc:Container>
Run Code Online (Sandbox Code Playgroud)

mc Container有一个名为content的默认内部属性,它是一个集合MyControls.

上面的标记在a里面FormView,当我调用FindControlformview时它可以找到容器,但是找不到测试.

如何使容器控件不创建新的命名容器?

编辑__

当不在a中时FormView,内部控件的ID确实显示为设计器中页面的一部分,因此它正在工作.

编辑__

这是我对容器的vb:

<ParseChildren(True, "Content")> _
Partial Public Class ctrFormContainer
    Inherits System.Web.UI.UserControl

    Private _content As FormControlCollection
    <PersistenceMode(PersistenceMode.InnerDefaultProperty), _
    TemplateInstance(TemplateInstance.Single)> _
    Public Property Content() As FormControlCollection
        Get
            Return _content
        End Get
        Set(ByVal value As FormControlCollection)
            _content = value
        End Set
    End Property

    Protected Overrides Sub CreateChildControls()
        If _content IsNot Nothing Then
            ctrChildren.Controls.Clear()
            For Each i As FormControl In _content
                ctrChildren.Controls.Add(i) …
Run Code Online (Sandbox Code Playgroud)

asp.net user-controls

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

getElementById返回null

我正在尝试使用此表单在我的文件中读取:

<form name="UploadForm" method="post">
    <input type="hidden" name="MAX_FILE_SIZE" value="100000" />
    Choose a CSV file to upload: <input name="upload_file" type="file" /><br />
    <input type="submit" value="Upload" onClick="uploadFile()" />
</form>
Run Code Online (Sandbox Code Playgroud)

但当我去读取此函数中的值时,我收到一个"cannon find"元素"null null:

function uploadFile() {
        var file = document.getElementById('UploadForm').elements['upload_file'].value;
        var allTextLines = file.split(/\r\n|\n/);
        var headers = allTextLines[0].split(',');
        var lines = [];

        for (var i=1; i<allTextLines.length; i++) {
            var data = allTextLines[i].split(',');
            if (data.length == headers.length) {

                var tarr = [];
                for (var j=0; j<headers.length; j++) {
                    tarr.push(headers[j]+":"+data[j]);
                }
                lines.push(tarr);
            }
        }
        alert(lines);
    }; …
Run Code Online (Sandbox Code Playgroud)

javascript csv

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