使用固定宽度字体时,我想以字符指定HTML元素的宽度.
"em"单位应该是M字符的宽度,所以我应该能够用它来指定宽度.这是一个例子:
<html>
<head>
<style>
div {
font-family: Courier;
width: 10em;
}
</style>
</head>
<body>
<div>
1 3 5 7 9 1 3 5 7 9 1
</div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
结果不是我想要的,因为第15列后的浏览器行中断,而不是10:
1 3 5 7 9 1 3 5
7 9 1
Run Code Online (Sandbox Code Playgroud)
(在Ubuntu中都有Firefox和Chromium的结果.)
维基百科的文章说,"em"并不总是M的宽度,所以看起来"em"单位看起来不可信任.
我想创建一个属性窗格,其中属性的数量可以根据选择的对象而变化.
我已经通过自己的指令创建了property一个名称,它显示了属性的名称和值,使用如下代码:
<div ng-app="MyApp">
<div class="properties-pane" ng-controller="PropertiesPane">
<div ng-repeat="property in properties">
<property name="{{property.name}}" value="{{property.value}}">
</div>
</div>
</div>
Run Code Online (Sandbox Code Playgroud)
简单,不是吗?这很好用,除了property.value它将转换为字符串(因为它是DOM元素的属性).如果属性值是其他数据类型,我该怎么办?例如一个对象.请参阅实现的其余部分(在Coffeescript中):
MyApp = angular.module('MyApp', [])
MyApp.controller 'PropertiesPane', ($scope) ->
$scope.properties = [
# Note that value is an object, not a string:
{name: 'First', value: {x:0, y:0, z:42}},
{name: 'Second', value: {x:0, y:20, z:0}},
{name: 'Third', value: {x:1, y:1, z:1}},
]
MyApp.directive 'property', ($compile) ->
restrict: 'E'
transclude: false
replace: true
scope: {name: '@name', value: '@value'}
template: '<div>{{name}} {{value.x}}, …Run Code Online (Sandbox Code Playgroud) 可能重复:
HTTP请求方法的客户端检测
我正在处理在任何页面上注入的Javascript.脚本注入我无法控制的服务器上.(使用附加组件或书签来完成注入.)
Javascript需要知道页面是否是作为HTTP GET或POST的结果加载的.这样做的原因是,如果页面加载了GET,则URL是页面的标识符,可以加入书签,与他人共享等.如果是POST,我需要以不同的方式处理它.
可以这样做吗?我发现无法从Javascript访问请求,但也许有一些我不知道的技巧.
我正在研究注入网页的代码(使用浏览器插件或脚本标签).
问题是,我们要使用全局对象和变量,如JSON,window.location,String.split,等,以及这些的实现可能已经被网页更改.这可能会使我们的代码失败,这是一个安全问题.
例:
>>> String.prototype.split = function() { return 'foo'; };
function()
>>> 'a,b,c'.split(','); // gives unexpected result
"foo"
Run Code Online (Sandbox Code Playgroud)
那么,是否有办法访问浏览器的默认实现对象和函数,就像它们被更改之前一样?它不一定是标准的,我只是希望功能存在.
在这段代码中,我想...用一种不冗长的方式来表达“带有匹配参数的空函数”:
std::function<void(int foo, float bar)> somefunc = ...;
Run Code Online (Sandbox Code Playgroud)
我希望它生成与此相对应的代码,但不重复参数类型:
std::function<void(int foo, float bar)> somefunc = [](int, float) {};
Run Code Online (Sandbox Code Playgroud)
std::function我可以这样声明和初始化:
std::function<void(int foo, float bar)> somefunc;
Run Code Online (Sandbox Code Playgroud)
然后我可以这样称呼它:
if(somefunc) {
somefunc(42, 4711.0f);
}
Run Code Online (Sandbox Code Playgroud)
但是 if 语句使代码变得臃肿(而且我不太喜欢空指针),因此我可以使用默认的空实现来定义该函数:
std::function<void(int foo, float bar)> somefunc = [](int, float) {};
Run Code Online (Sandbox Code Playgroud)
然后调用将很简单:
somefunc(42, 4711.0f);
Run Code Online (Sandbox Code Playgroud)
但是重复这样的参数会有点重复,所以我想要一些能够生成空实现的东西。