Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

Loading…

Variable in url(..) not possible #190

Closed
tristanlins opened this Issue · 8 comments

9 participants

Tristan Lins Ed Finkler Chase Wilson Alexis Sellier Ben Hockey Colin Snover Jim Dalton Mohamed Meligy Luke Page
Tristan Lins

I tried to make a function, that using an argument as url(..) value.

e.a.

.give-a-background(@bg) {
    background: url(@bg) no-repeat left center, ...;
}

.css-class {
    .give-a-background("images/foo.png");
}

i got a "could not call charAt of undefined" from line 2183 (v 1.0.41), because val.value is undefined.

currently its only possible this way

.give-a-background(@bg) {
    background: @bg no-repeat left center, ...;
}

.css-class {
    .give-a-background(url("images/foo.png"));
}
Ed Finkler

Running into this myself. Would be extremely handy for setting base paths.

Chase Wilson

Try This:

@base: "//";
.background(@image:'', @left:0, @top:0,@repeat:no-repeat){
    @url: %('%s%s',@base, @image);
    background: url(@url) @left @top @repeat;
}
Alexis Sellier
Owner

That's odd, it works just fine here.

Chase Wilson

@cloudhead I was pointing out to funkatron & trilin how I got it to work.

Ben Hockey

for anyone else who comes across this issue i found i couldn't get @jiggliemon's solution to work (less 1.1.4) but based on http://lesscss.org/#-string-interpolation this worked for me

.background-image (@url) {
    background-image: url("@{url}");
}

i suppose this ticket could be closed?

Colin Snover

This only happens in browser environments and is caused by the relative path “fixing” code in the tree.URL ctor. It does not check that val.value actually exists before trying to operate on it.

Jim Dalton

This is an issue when trying to use Twitter Bootstrap 2.0 with less.js in the browser environment.

Bootstrap uses the url(@url) format to pull sprite images in in sprites.less. less.js chokes on the undefined val.value that's passed to tree.URL() and an error is thrown, causing bootstrap not to load.

@csnover 's change resolves the issue for me.

I have updated my local copy of less.js so it's smooth sailing for me, but since this issue prevents Twitter Bootstrap 2.0 from running in the browser environment I hope it will get resolved soon, since others are probably having the same problem. E.g. I'm guessing this SO question might be related: http://stackoverflow.com/questions/8095499/twitter-bootstrap-wont-work-with-less-js

Deleted user Unknown referenced this issue from a commit
Commit has since been removed from the repository and is no longer available.
Mohamed Meligy

Is the fix available in current release? (asking as I see the bug is still open).

Luke Page lukeapage closed this in 2c75e4f
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Something went wrong with that request. Please try again.