我想根据浏览器是否为IE7更改我的javascript代码行.以下是任何其他浏览器的代码:
function showHint(myId)
{
document.getElementById(myId).style.display = "inline-block";
}
Run Code Online (Sandbox Code Playgroud)
对于IE7,我想要display ="inline".
我已经尝试了条件编译(这向我展示了如何检测浏览器),但它不起作用:
function showHint(myId)
{
document.getElementById(myId).style.display = "inline-block";
/*@cc_on
@if(navigator.appVersion.indexOf(“MSIE 7.”)!=-1)
{
document.getElementById(myId).style.display = "inline";
}
@*/
}
Run Code Online (Sandbox Code Playgroud)
任何帮助是极大的赞赏!
编辑:我没有使用JQuery.
javascript internet-explorer conditional-compilation internet-explorer-7
有没有办法让GWT为每个目标浏览器编译不同的Java代码?
GWT今天为每个目标浏览器创建一个不同的脚本,所有脚本都是从同一源文件生成的.然而,在不同的浏览器非标准功能工作时(例如,文件拖放到浏览器),支持不同浏览器之间的差异较大,需要编写不同的代码.
有没有类似的东西
// if IE
.. some Java code to compile into the IE script
// else if chrome
.. some Java code to compile into the chrome script
Run Code Online (Sandbox Code Playgroud)
等等
我尝试从Cython pxd有条件地编译(或生成)到c代码.我读到我可以DEF定义一个值和IF根据它的值有条件地生成,但是如何从pxd文件外部获取此值?
具体来说,这两个案例对我来说很有意义:
谢谢
你能使用静态库中定义的宏吗?
我有自己的调试宏TWDEBUG,我在一个我创建用于共享的静态库中使用.如果我将静态库导入到我的新项目并使用它,编译器似乎无法识别它.我确实将预处理器宏设置为TWDEBUGand Other C flags和Other C++ flagsto -TWDEBUG,但是当我运行代码时,ifdef宏不会被执行.
我可以#ifdef #imports在objective-c吗?
例如:
#ifdef USE_A
#import "ClassA.h"
#endif
#ifdef USE_B
#import "ClassB.h"
#endif
Run Code Online (Sandbox Code Playgroud) 继这个回答的问题,我有另一个棘手的问题.我的编码是Free Pascal,但Delphi解决方案可能会起作用.
简而言之,我有一个串联路径的字符串值,它是通过获取源目录并在目标目录中重新创建该树而形成的.例如
C:\ SourceDir\SubDirA变为F:\ DestinationDir\SourceDir\SubDirA.
但是,我对我的程序的Linux版本的解决方案(如上面的链接中所述)与Windows版本不兼容,因为我最终得到:
F:\ DestionationDir\C:SourceDir\SubDirA.
这是无效的.
所以我想出了这个"仅在Windows中运行"代码来删除重组路径的中央驱动器号,但是在开头留下最初的一个,说"从左边的第4个字符开始查看字符串.如果你找到'C:',删除它",使路径变为F:\ DestinationDir\SourceDir\SubDirA.
{$IFDEF Windows} // Only do this for the Windows version
k := posex('C:', FinalisedDestDir, 4); // Find 'C:' in the middle of the concatanated path and return its position as k
Delete(FinalisedDestDir, k, 2); // Delete the 2 chars 'C:' of 'C:\' if found, leaving the '\' to keep the path valid
{$ENDIF}
Run Code Online (Sandbox Code Playgroud)
现在,如果C:是所选目录的源,那就可以正常工作.但显然如果用户正在从另一个驱动器复制数据(例如E:,F:,G:或其他任何驱动器直到Z :)它将无法工作.
所以我的问题是,如何对其进行编码,使其显示"如果在左边第4个字符后找到任何驱动器号a:到z:,则将其删除"?虽然任何解决方案都"有效",但理想情况下我需要快速解决方案.最好的解决方案是首先没有它在那里,但鉴于我在回复我之前的帖子时发布的解决方案,由于我用来形成的程序,我无法弄清楚如何不使用它它.
查看config.h中的代码:
#if (API_TYPE == 1)
#define URL_API @"https://dapi.xxx.com/1.1/"
#elif (API_TYPE == 2)
#define URL_API @"https://tapi.xxx.com/1.1/"
#elif (API_TYPE == 3)
#define URL_API @"https://api.xxx.com/1.1/"
#else
// I want stop pre-compile if in here.
// assert(0);
#endif
Run Code Online (Sandbox Code Playgroud)
API_TYPE只能定义为1,2,3.如果被定义为其他值则是错误的.我可以在#else路径中写一些非法代码.但它并不完美.是否有任何命令或方法停止预编译过程,如果它是#else路径?
可能重复:
Java中的#ifdef #ifndef
我试图通过使用类似这样的东西在我的Android代码中实现一些调试消息:
private static final boolean DEBUG = false;
if (DEBUG) {
// some code
}
Run Code Online (Sandbox Code Playgroud)
但是,在编译时我不断收到"非法表达式启动"错误.final boolean有效,但既不是静态也不是私有.
我在方法中声明了DEBUG变量.如果有一种方法可以使这个全局化,以便同一个Java文件中的所有内容都能看到它而不是我必须在每个需要它的方法中声明它,那么也会感激不尽.
谢谢!
我有一个项目的参考可能存在,也可能不存在.我有使用该引用的代码,我只想在程序集存在时编译它.我正在考虑以下几点:
#if ASSEMBLY_EXISTS
AssemblyClass.DoSomething();
#endif
Run Code Online (Sandbox Code Playgroud)
我可以根据需要将#define放在顶部并注释/取消注释,但我更愿意,如果没有我的手动干预,它可能只是知道它是否在那里,这让我相信#if不适用于这种情况.是否存在另一种基于程序集是否存在而有条件地编译的方法?
假设我有一个箱子,glob只有在#[cfg(feature = "glob")]启用时才依赖于箱子.此外,默认情况下禁用此功能.如何在glob默认情况下跳过下载和编译包?
# Cargo.toml
...
[features]
default = []
[dependencies]
glob = "0.2"
...
Run Code Online (Sandbox Code Playgroud)
和源代码:
# lib.rs
.. several uses
#[cfg(feature = "glob")]
extern crate glob;
... a lot of code that doesn't use glob crate.
#[cfg(feature = "glob")]
impl Foo for Bar {
// only this code uses glob crate
}
Run Code Online (Sandbox Code Playgroud) dependencies conditional-compilation rust rust-crates rust-cargo
java ×2
objective-c ×2
android ×1
c ×1
c# ×1
conditional ×1
cython ×1
delphi ×1
dependencies ×1
freepascal ×1
gwt ×1
ios ×1
javascript ×1
macros ×1
precompiled ×1
rust ×1
rust-cargo ×1
rust-crates ×1