题:
IE和Firefox/Safari似乎与BASE HREF和Javascript window.location类型请求的处理方式不同.首先,这是对问题的准确描述吗?这是怎么回事?什么是处理这种情况的最佳跨浏览器解决方案?
语境:
我有一个小的PHP平面文件sitelet(它实际上是一个可用性测试原型).
我在PHP中动态生成BASE标签的HREF值,即如果它在我们公司的服务器上运行,它是:
$basehref = 'http://www.example.com/alpha/bravo/UsabilityTest/';
Run Code Online (Sandbox Code Playgroud)
在我的本地开发机器上,它是:
$basehref = 'http://ellen.local/delta/echo/foxtrot/UsabilityTest/';
Run Code Online (Sandbox Code Playgroud)
对于其中一个任务,我收集一些用户输入,在Javascript中对其进行一些转换,并使用如下代码发送到服务器:
function allDone() {
// elided code for simplicity of stackoverflow question
var URI = "ProcessUserInput.php?";
URI = URI + "alphakeys=" + encodeURI( keys.join(",") );
URI = URI + "&sortedvalues=" + encodeURI( values.join(",") );
window.location = URI;
}
Run Code Online (Sandbox Code Playgroud)
javascript文件(包含函数allDone())和处理PHP脚本(ProcessUserInput.php)都位于UsabilityTest的子目录中.换句话说,他们的实际网址是
http://www.example.com/alpha/bravo/UsabilityTest/ foxtrot/ProcessUserInput.php aka
$basehref . '/foxtrot/ProcessUserInput.php'
问题
IE的JavaScript基本上似乎忽略了BASE HREF.javascript和PHP处理器存在于同一目录中,因此对ProcessUserInput.php的调用很好.输入得到处理,一切正常.
但是当我在Firefox上测试时,JavaScript 似乎确实使用了BASE HREF,因为脚本的输出被发送到了
$basehref . '/ProcessUserInput.php'
Run Code Online (Sandbox Code Playgroud)
这会中断,因为ProcessUserInput.php位于basehref的子目录中.但是,如果我将子目录名称添加到javascript中,它将不再适用于IE. …
(我知道其他人问了一个类似的问题,它被关闭为'议论',但我真的很有兴趣理解围绕这个问题的争论.)
我非常了解JavaScript.我已经专业写了多年了.我已经内化了很多跨浏览器的不兼容性和粗略感,知道DOM操作就像我的手背,已经与业内一些最好的Web开发人员合作并获得了很多他们的魔力.
我一直在查看jQuery.我理解javascript库的意义(我写了多少次动画,getElementsByClass和hide/show函数?).但说实话,学习一种并不复杂的全新语法似乎是浪费时间.看起来我正在抨击墙壁来学习一个全新的JavaScript接口.
我在技术上不是工程师,所以也许我错过了什么.有人可以拼出jQuery的权衡吗?学习和理解jQuery语法真的比学习JavaScript更快吗?
我正在尝试在我们的网站上设置选择颜色[对于支持此功能的浏览器; 不支持将获得系统默认值; 寻找仅限CSS并且不会为此实现JS].
::选择在常规页面文本上正常工作(在这里省略-moz).但是,我希望:: selection也适用于INPUT和TEXTAREA元素中的选定文本.以下适用于Firefox(https://d3vv6lp55qjaqc.cloudfront.net/items/3f2m2S342i2a2V0z2C2W/Screen%20Shot%202013-08-21%20at%2012.34.54%20PM.png?X-CloudApp-Visitor-Id=695722fcc5cecec10f09e16181dbdf5f&v= c618e057),但不能在WebKit的(Chrome或Safari)工作,在那里我得到了系统默认的淡蓝色(https://d3vv6lp55qjaqc.cloudfront.net/items/1r2l1X1P2V3g031F152A/Screen%20Shot%202013-08-21%20at% 2012.35.29%20 PM.png?X-CloudApp-Visitor-Id = 695722fcc5cecec10f09e16181dbdf5f&v = c886aa70):
::selection { background: #f7a494; }
input::selection { background: #f7a494; }
Run Code Online (Sandbox Code Playgroud)
我四处寻找-webkit覆盖但未找到相关属性.
我正在使用Litmus测试电子邮件设计,并且在我的生活中,我无法在Outlook 2007/2010/2013中正确设置我的字体.每个HTML/CSS技巧/黑客继续在Times New Roman中呈现:
`
我主要使用简单的表格进行布局,因此所有内容最终都在TD元素中.
以下是我尝试设置字体的各种技巧.
我的STYLE声明:在HEAD和BODY标签中都尝试了这个并且都不起作用.
<style>
@font-face {
font-family: proxima-nova;
src: url('assets/ProximaNova-Reg.otf');
}
@font-face {
font-family: proxima-nova-blk;
src: url('http://assets/ProximaNova-Black.otf');
}
body *, td, p, li {
font-family: font-family:proxima-nova,'Proxima Nova Regular','Proxima Nova',verdana,sans-serif;
}
</style>
Run Code Online (Sandbox Code Playgroud)
在TD元素上设置CSS STYLE属性:
<td style="font-family:proxima-nova,'Proxima Nova Regular','Proxima Nova',verdana,sans-serif; color:#FFFFFF; font-weight:300;font-size:18px;">
Run Code Online (Sandbox Code Playgroud)
设置了FACE和STYLE属性的FONT标记:
<font face="proxima-nova,Proxima Nova Regular,Proxima Nova,verdana,sans-serif"
style="font-size:28px;
font-family:proxima-nova,'Proxima Nova Regular','Proxima Nova',verdana,sans-serif;">
Run Code Online (Sandbox Code Playgroud)
所有内部文本元素(P,LI,A)上的内联CSS STYLE属性:
我完全感到困惑.在所有其他相关客户端,一切都正常工作(即字体渲染,因为我期望给出各种错误和渲染怪异),包括iOS,Gmail,Outlook 2003/Express等:

我有一个表单附加到Google Apps电子表格.这是让我的同事向我们的每周评审会议提交议程项目的表格.我正在编写一个脚本来自动通过电子邮件将提醒发送给相关人员.
为了减少烦恼和乏味,我想将表单嵌入电子邮件中.Google文档提供了一种手动发送表单的方法:电子表格>表单>发送表单.但是,我在Google Apps Scripts文档中找不到任何可以触发此功能的方法,例如
我可以通过从电子邮件中提取生成的HTML并将其指定为htmlBody参数来做一个解决方法,但是每次我们想要对表单进行更改时我都必须手动更新html - 而不是我想要的发生.
有什么建议?
Jinja2 模板代码:
{% if u.user_name == u.user_email %}
{{ u.user_email }}
{% else %}
{{ u.user_name }}<br />
{{ u.user_email }}
{% endif %}
Run Code Online (Sandbox Code Playgroud)
如果没有单独的名称,通常数据源会将 user_name 字段设置为 user_email。但是,有时根本没有为 user_name 字段定义任何内容。
问题在于,在上面的 Jinja2 代码中,如果 user_name 字段未定义/为空,则上面的测试评估为 false 并且两行都被吐出 - 其中之一是空白。
我不确定如何正确编写此测试语法。我已经阅读了文档并尝试了诸如Convert integer to string Jinja和比较 jinja2 模板中的两个变量之类的方法。我想我的数据类型有问题,我只是不确定如何编写此语法以使其正常工作。
任何帮助表示赞赏!
html ×2
javascript ×2
css ×1
email ×1
google-forms ×1
href ×1
html-email ×1
jinja2 ×1
jquery ×1
outlook-2007 ×1
webkit ×1