小编Jam*_*ice的帖子

使用php保护简单的所见即所得的最佳方法

我在我的网站上添加了一个简单的所见即所得编辑器.(它只允许B/I/U - 没有更多)
我目前将所有内容存储为我的数据库中的html - 但是atm它很容易添加<a onclick='...'>或其他恶意代码)

什么是PHP的最佳方式来安全地解析输入?如何实现<b></b> <i></i>等白名单和编码其他所有内容?

php security xss wysiwyg

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

数组中函数的上下文是什么?

这是我确定应该知道的答案,但要么我只是愚蠢,要么我以前从未遇到过这个问题......

给定以下数组,在全局范围内声明:

var arr = [function() {
    console.dir(this);
}];
Run Code Online (Sandbox Code Playgroud)

我本来希望this引用Window对象.但是,在调用函数时:

arr[0]();? //Logs Array
Run Code Online (Sandbox Code Playgroud)

它似乎this实际上是指数组.然后,当我在另一个变量中存储对该函数的引用并调用它时,this 确实引用了Window对象:

var func = arr[0];
func(); //Logs Window
Run Code Online (Sandbox Code Playgroud)

那么,为什么函数的上下文会发生变化?这是展示上述两种情况小提琴.

javascript

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

Jquery - 在已知元素之后找到下一个输入:text元素

我有一个id为给<tr id="tagTR"> 定上述,是否有可能找到下一个input:text元素,无论其间是否有任何其他标记.是否有一个jQuery选择器,我可以用于这种情况?

例如 :

<tr id="tagTR"> 
</tr>
<tr id="tagRed"> 

  <td> </td>
</tr>
<div>
 <tr>
   <td>
     <input> // This is what I want to get to. 
   </td>
 </tr>
</div>
Run Code Online (Sandbox Code Playgroud)

jquery element input next

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

使用QUnit对AJAX请求进行单元测试

我们正在尝试为JS重型Web应用程序实现QUnit JavaScript测试.我们正在努力寻找成功测试涉及jQuery AJAX请求的方法的方法.例如,我们有以下构造函数(显然这是一个非常简单的例子):

var X = function() {
    this.fire = function() {
        $.ajax("someURL.php", {
            data: {
                userId: "james"
            },
            dataType: "json",
            success: function(data) {
                //Do stuff
            }
        });
    };
};
var myX = new X();
myX.fire();
Run Code Online (Sandbox Code Playgroud)

我们正试图找到一种方法来测试该fire方法,最好是使用存根URL而不是真实的URL someURL.php.

目前唯一明显的解决方案是将URL和success回调添加为构造函数的参数.这样,在测试中,我们可以创建一个新的实例X并传入存根URL,并在存根返回响应时运行一个回调.例如:

test("Test AJAX function", function() {
    stop();
    var myX = new X();
    //Call the AJAX function, passing in the stub URL and success callback
    myX.fire("stub.php", function(data) {
        console.log(data);
        start();
    });
});
Run Code Online (Sandbox Code Playgroud)

但是,这似乎不是一个非常好的解决方案.有没有更好的办法?

javascript unit-testing qunit

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

为twitter bootstrap添加所有选择器的前缀为less

我想开始学习Twitter Bootstrap并将其合并到我的网站(从表单元素开始),但如果按原样包含它,它会打破网站的其余部分.

我想为所有选择器添加前缀,以便我可以逐步添加像bootstrap样式的内容: <div class="bootstrap"><!-- bootstrap styled stuff here --></div>

因为我才开始学习,所以我真的不知道有什么可能less.我已经手动完成了选择器前缀,但我很好奇是否有办法做到这一点,less这样我就可以通过修改bootstrap来学习它,同时仍然将它隔离在一个必需的bootstrap容器中.

现在,我必须在编译less文件后的第二步添加前缀.

谢谢你的任何建议!

less twitter-bootstrap

6
推荐指数
3
解决办法
7401
查看次数

控制台返回undefined

所以我劫持了控制台功能

var log = Function.prototype.bind.call(console.log, console);
console.log = function (a) {
    log.call(console, a);
    submitmsg("Log", a);
};
Run Code Online (Sandbox Code Playgroud)

这有所期望的效果,但它也会返回"未定义"作为意外奖励

我无法弄清楚为什么导致我认为这里有一点点错误

在此输入图像描述

Hello world log.call(console, a)按预期生成

submitmsg() 是我的自定义功能

这正是我想要的,正如我所说的虽然我稍微担心它也因为我不理解的原因而返回"未定义".


注意: OP发布了以下代码作为问题的答案.对答案的评论已移至对该问题的评论.


所以正确的代码应该如下?

var log = Function.prototype.bind.call(console.log, console);
console.log = function (a) {
    return log.call(console, a);
    submitmsg("Log", a)
};
Run Code Online (Sandbox Code Playgroud)

javascript

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

javascript ondrop事件

我在JavaScript中使用drop事件使用以下代码上传文件:

var fileName = event.dataTransfer.files[0].name;            
var orgValue = document.getElementById('<%=tbfilesCollections.ClientID%>').value;
if (orgValue == 'undefined') {
    orgValue = '';
}
orgValue += orgValue == '' ? '' : '\n';
orgValue += "*" + fileName;
document.getElementById('<%=tbfilesCollections.ClientID%>').value = orgValue;
event.preventDefault();
return false;
Run Code Online (Sandbox Code Playgroud)

但是这段代码只获取文件名...我需要获取文件的完整路径.

javascript

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

stopPropagation和live()方法.我错过了什么?

我已经阅读了jQuery doc,我知道如果我使用live()将事件绑定到元素上,使用stopPropagation()是没有意义的,因为带有live()的事件绑定到文档节点,因此事件已经被激活了.这么说,我认为nex代码会提醒3次,因为stopPropagation不会停止任何事情:

<ul style="border:red solid 1px;">
    <li style="padding:10px; border:blue solid 1px;">
        <p style="border:green solid 1px;"><a href="#">link</a></p>
    </li>
    <li style="padding:10px; border:blue solid 1px;">
        <p style="border:green solid 1px;">no link</p>
    </li>
</ul>

<script type="text/javascript">
    $('a').live( "click", function( e ) {alert("link");e.stopPropagation()} );
    $('ul').live( "click", function( e ) {alert("ul");} );
    $('ul li').live( "click", function( e ) {alert("li");} );
</script>
Run Code Online (Sandbox Code Playgroud)

当我点击链接时我预期并提醒"li"和"ul",但是当它应该是没用的时候,stopPropagation会停止其他事件.我错过了什么?

jquery events stoppropagation

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

IE 8显示了使用jQuery BBQ重新加载页面时的原始ajax响应

我在分页链接上使用Ben Almans的jQuery BBQ和jQuery hashchange插件.两者都在Opera和Firefox中按预期工作,但在IE 8中没有(令人惊讶,是吧?).IE也适用于ajax,后退按钮和hashchange,但是当我单击重新加载按钮并显示原始ajax响应而不是在先前加载的页面中运行它时失败.

所以这是我的丑陋代码和我试图在我的分页中实现的功能的一些解释:

1)搜索引擎友好链接(服务器根据客户端的javascript可用性响应html或js).

2)打开JS时使用动态可更改的URL(使用"#"符号).

3)历史和后退按钮支持.

4)最小化双重请求(如果使用html页面加载相同内容,则不要发出ajax请求).

JS:

$(function ($) {
  if (ajax_init) {
    $('.pagination a').live("click", function () {
      $.bbq.pushState({page: $.deparam.querystring($(this).attr('href')).page});
      return false;
    });
    $(window).bind("hashchange", function(e) {
      var anchor = $.deparam.fragment().page;
      var query = $.deparam.querystring().page;
      if (ajax_load(anchor, query)) {
        $(ajax_div).css('opacity', '0.4');
        $(ajax_div + '-processing').removeClass('hidden');
        $.ajax({
          type: 'GET',
          url: $.param.querystring('', {page: anchor}),
          dataType: 'script',
          cache: false
        });
      }
    });
    $(window).trigger('hashchange');
  }
});

function ajax_load(anchor, query) {
  if ((anchor && anchor !== query && !(!query && anchor …
Run Code Online (Sandbox Code Playgroud)

jquery ruby-on-rails hashchange jquery-bbq

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

你能在消失时为 SwiftUI 视图设置动画吗?

我有一个 SwiftUI View,它有一个运行的自定义动画onAppear。我也试图让视图动画化onDisappear,但它立即消失了。

下面的示例重现了该问题 -MyText视图应从左侧滑入并从右侧滑出。修饰符id用于确保每次值更改时都会渲染一个新视图,并且我已经确认确实每次都会调用 和 ,但动画onAppear永远不会明显运行。我怎样才能实现这个目标?onDisappearonDisappear

struct Survey: View {
  @State private var id = 0

  var body: some View {
    VStack {
      MyText(text: "\(id)").id(id)

      Button("Increment") {
        self.id += 1
      }
    }
  }

  struct MyText: View {
    @State private var offset: CGFloat = -100
    let text: String

    var body: some View {
      return Text(text)
        .offset(x: offset)
        .onAppear() {
          withAnimation(.easeInOut(duration: 2)) {
            self.offset = 0
          }
        } …
Run Code Online (Sandbox Code Playgroud)

swift swiftui

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